検索

ホームページ  >  に質問  >  本文

PHP メールが破損したヘッダーを送信する

PHP スクリプトから電子メールを送信することに取り組んでいます。 mail() 関数がトリガーされると、受信者のメールボックスは特定のサービス (seznam.cz) によってホストされ、メッセージはメール クライアント (Mozilla Thunderbird) と ESET ウイルス対策ソフトウェアにダウンロードされ、メッセージがチェックされます。破損しているようです。

この問題は、ウイルス対策ソフトウェアがメール メッセージに特別なヘッダーを挿入し、その後に空行を残すことが原因であると考えられます:

リーリー

私の電子メール クライアントは、メッセージがプレーン テキストであり、X-PHP-Originating-Script という行で始まると考えます。メッセージの残りの部分には、すべての HTML マークアップが含まれます。

これは電子メールの送信に使用するスクリプトです:

リーリー

ただし、Laravel フレームワークを使用すると、電子メールは正しく送信され、表示されます。違いを比較したところ、X-PHP-Originating-Script ヘッダーが Laravel によって送信されていないことがわかりました。

これが原因でしょうか?どうすれば解決できますか?

P粉979586159P粉979586159476日前664

全員に返信(1)返信します

  • P粉573943755

    P粉5739437552023-09-08 00:38:50

    これは単に行区切り文字の違いの問題である可能性があります。

    PHP 7.4 までは、X-PHP-Originating-Script の後の区切り文字は \n でした (これは、PHP 8 では \ を使用して に変更されました) r\n、さらに最近ではマスターで他の要因に基づいて意思決定を行っています)。

    他のすべてのヘッダーは

    \r\n を使用して連結されるため、ウイルス対策ソフトウェアはヘッダーを追加するときに混乱を引き起こす可能性があります。これにより、二重改行が作成され、クライアントによって本文の開始として解釈されます。

    \n\r を含むすべての文字を表示するエディターで元のメッセージを表示すると、よりよく理解できる可能性があります。

    解決策は、PHP バージョンの行末を一致させるか、php のすべての設定

    mail.add_x_header = Off で XX-PHP-Originating-Script ヘッダーを削除することです。 .ini 中間。

    返事
    0
  • キャンセル返事