0

SO のおかげで、引用された印刷可能な電子メールをデコードする独自の関数を作成することを避け、代わりに PHP のdecode_quoted_printable()関数を使用することで、時間を節約することができました。

しかし、すぐに問題が発生しました。バウンス通知メールをデコードしてブラウザーに表示する必要があり、メールの本文には元のメール ヘッダーが含まれています。これには元の送信元アドレスが含まれており、バウンス バックをデータベース内の対応するユーザー。

バウンス通知メールの本文には、次のスニペットが含まれています。

------ This is a copy of the message, including all the headers. ------

Return-path: <blah+user=af.com@mydomain.com>

問題はquoted_printable_decode()、「=」文字を特殊文字として使用して、特別なデコードが必要になる可能性があることを示していることです。'=af' (\x3D6166) の場合、マクロン文字の Unicode コード ポイントである \xAF に変換することを決定します。後でこれを実行するhtmlentities()と、マクロン文字の適切な HTML コードに変換されるため、最終的にブラウザーに次の出力が表示されます。

リターンパス: <blah+user¯.com@mydomain.com>

もちろん、これは '=' で始まるすべてのシーケンスで発生するわけではなく、意味のある Unicode コード ポイントに変換できると PHP が判断したものだけです。代替案imap_qprint()は同じ動作を示します。

ああ、私は PHP 5.3.8 を実行しています。

私は何か間違ったことをしていますか、それともこれがどのように機能するquoted_printable_decode()はずですか?

4

1 に答える 1