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()
はずですか?