1

Snow leopard でローカル開発環境をセットアップし、postfix を設定して、isp メール サーバー経由でメールを送信しました。

私は最終的に多くの欲求不満の後にpostfixが機能するようになりましたが、今ではメールが送信されるとヘッダー情報が詰まっています!

私は次のphpコードを使用しています:

$email = "me@mydomain";
$subject = "電子メール テスター";
$body = "簡単なテスト";
$header = "差出人: me@mydomain \r\n";
$header .= "MIME-VERSION: 1.0\r\n";
$header .= 'コンテンツタイプ: text/html; charset=iso-8859-1' . "\r\n";
$phpversion = phpversion();
$header .= "X-Mailer: PHP v$phpversion\r\n";
メール($email,$subject,$body,$header);

echo "メッセージを送信しました!";

To: および Subject: ヘッダーはヘッダーに表示されますが、残りはメール本文に表示されます。これにより、電子メール クライアントの送信者フィールドが空であるように電子メールが表示されます。

私はさまざまなphpスクリプトを試しました.いくつかは非常に単純ですが、同じことで、ヘッダーは常にメール本文に表示されます.

後置の問題である可能性があると思いますが、確かではありませんが、以前にこの種の問題に遭遇した人はいますか?

4

3 に答える 3

4

*additional_headers* で \r\n の代わりに PHP_EOL を使用します。例では $header です。PHP_EOL は、実行中の OS に応じて改行を置き換えます。

また、メッセージには \n などの LN のみを含める必要があります。これは、PHP ドキュメントに従っています。 各行は LF (\n) で区切る必要があります。行は 70 文字を超えてはなりません。

スクリプトで両方の基準を満たしていることを確認してください - 私はそれを達成しようとしましたが、最終的に Postfix のデフォルト設定で動作するようになりました。

于 2011-05-16T20:10:47.403 に答える
3

これはほぼ 100% Postfix の問題ではなく、コードが原因です。ヘッダーの後に空白の CRLF が表示されると、本文が開始されます。

メール本文を破棄して、誤って余分な CRLF を導入していないかどうかを確認してください。

于 2010-02-09T23:44:24.250 に答える
0

この問題をさらに調査すると (基本的には、それだけで多くのスクリプトを改善したくなかったためです)、PHP と Postfix 開発者の間に強い対立があり、現在まで修正されていないことがわかりました。ここで幅広い情報を読むことができます:

http://www.mail-archive.com/postfix-users@postfix.org/msg03226.html

Postfix は、UNIX で sendmail からメールを取得するときに EOL が LF であることを想定し、送信時にそれを CRLF に置き換えます。CRLF を取得すると、引き続き LF を置き換え、 CRCRLF を取得します

壊れたヘッダーについて説明します。これを解決するには、Postfix と PHP/メール システムがどのように機能するかを正確に知る必要があります。上記のような問題が発生した場合は、"\r\n" の代わりに "\n" を使用してください。Windows/Unix の両方で実行できる複雑なシステムをプログラムする場合は、$eeol="\r\n" のような追加のパラメーターを導入するだけです。これは、直接の「\r\n」タグの代わりに配置され、その方法でどのシステムでも簡単に構成できます。

それがPostfixの作者が推奨するアプローチだと思います:

PHP アプリケーション プログラマーが電子メール メッセージを一貫した方法でフォーマットできれば、非常によいことです。たとえば、LF または CRLF の行末記号をあちこちにハードコーディングする代わりに、END-OF-LINE 終端記号を含む変数を使用できます。

于 2011-06-15T15:49:11.357 に答える