PHP メールが破損したヘッダーを送信する
P粉979586159
P粉979586159 2023-09-07 10:43:50
0
1
663

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

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

リーリー

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

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

リーリー

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

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

P粉979586159
P粉979586159

全員に返信(1)
P粉573943755

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

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
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート