0

PHPから電子メールを送信しようとしていますが、機能していますが、電子メールの「from」部分に多くの余分なものが含まれていることに気づいています。私が想定している余分なものは、私のサーバーからの情報ですか?

たとえば、フィールドからのメールをそのまま送信するのでは$from = "myname"なく、次のようになります。"myname"

myname@p3nlhg.phx3.secureserver.net

これが私が遊んでいる私のPHPです。重要な部分は私の$fromvarです:

$from = "myname";

mail($to,$formSubj,$formMssg,$from);

正直なところ、私が持っているのはそれだけで、多かれ少なかれ($fromに関する限り)何もありません。どうすればこれをクリーンアップするか$from、この場合はのプレーンな値だけが表示されるようにすること"myname"ができますか?

4

3 に答える 3

2

mailドキュメントによると、あなたは引数$fromとして使用しています。$additional_headers

代わりに$from、適切なヘッダーに変更してください。例えば、

$from = "myname";
$headers = "From: $from <user@example.com>";
mail($to, $formSubj, $formMssg, $headers);

のドキュメントによるとadditional_headers

メールを送信する場合、メールにはFromヘッダーが含まれている必要があります。これはパラメータで設定することも、php.iniでデフォルトを設定することもできます。additional_headers

これを行わないと、警告のようなエラーメッセージが表示されます。mail(): "sendmail_from"がphp.iniに設定されていないか、カスタムの "From:"ヘッダーがありませんFromヘッダーは、WindowsではReturn-Pathも設定します

于 2012-05-31T04:07:52.557 に答える
2

メール関数の4番目のパラメーターはこのようには機能しません。ヘッダー情報が必要です。やりたいことを達成するには、次のようにします。

$header = "From: myname <no-reply@test.com> \r\n";
mail($to,$formSubj,$formMssg,$header);

あなたも孤独を使うべきではありませんmyname。有効な電子メールアドレス文字列が必要です:myname <no-reply@test.com>またはno-reply@test.com。をmyname入力すると、PHPはそれを電子メールアドレスとして解釈しようとします。それがあなたが得ている理由ですmyname@p3nlhg.phx3.secureserver.netp3nlhg.phx3.secureserver.netサーバーのホスト名である必要があります。

ヘッダーパラメーターの良いところは、それを使用して他のあまり一般的でないフィールドを指定できることです。例えば:

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";

\r\n各ヘッダー属性の最後にキャリッジリターン/ラインフィード()を配置する必要があることに注意してください。単純な改行は機能しません。

于 2012-05-31T04:19:15.397 に答える
-1

サーバーにインストールしたメールサーバーから送信されます。postfix、courierなどの別のメールサーバーに切り替えてみてください。

于 2012-05-31T04:03:29.247 に答える