1

次のヘッダーは、PHP の mail() 関数を使用して送信されます。

$emailheaders = "From: " . $sender . "\n";
$emailheaders .= "Return-Path: " . $sender . "\n";
$emailheaders .= "MIME-Version: 1.0\n";
$emailheaders .= "Content-type: text/html; charset=UTF-8\r\n";

mail($email, $subject, $body, $emailheaders);

Return-Path:にリセットされることを除いて、正常に動作します。nobody@server.com少なくとも、上記のヘッダーを使用して受信した電子メールの拡張ヘッダーを表示すると、これが表示されます。当然、これはバウンス メールが受信されないことを意味します。

Apache はヘッダーをリセットしますか? この場合はなぜですか? またはmail()間違って使用していますか?

これが起こらないようにするにはどうすればよいですか。mail()の 5 番目のパラメーター (例: )を使用-f sender@server.comすることは問題外です。PHP はセーフ モードであり、プロバイダーはそれを変更しません。セーフモードがオンになっているにもかかわらず、特定のユーザーに5番目のパラメーターを許可する方法はないと思います。

サーバーは Apache 2.2.3 および PHP バージョン 5.1.6 を実行しています。

4

2 に答える 2

2

サーバーのメール転送エージェント (MTA) がreturn-path. たとえば、Exim を使用する場合:

構成ファイルで次return-pathのように設定します。/etc/exim/exim.conf

return_path = sender@example.com

サーバー構成または 5 番目のパラメーターにアクセスできない場合は、mail()おそらく何もできません。

于 2012-12-18T12:40:23.707 に答える
0

を使用してヘッダーを分割していますが\n、PHP によると \r\n である必要があります (PHPメールヘッダーのどの改行、 \r\n または \n? を参照してください)。

おそらくそれが、ヘッダーが正しく送信されない理由です。

于 2012-12-18T12:34:26.417 に答える