質問: '💢⛄ 📻❔🅾 🐾 😨 髙 ああ いい うう ええ ABCDEFG'; ``` 最終的にメールヘッダーは ``` From: =?UTF-8?B?8J+Vk/CfhpEg8J+RjPCfkqLinZTwn4W+IPCfkL4g8J+YqA==?= Reply-To: sample@gmail.com Return-Path: sample@gmail.com X-Mailer: Send Mail By MyMail MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Bcc: aaa@sample.com,bbb@sample.com ``` このような内容になりました。 上記の変数をそのまま、mail関数に使用しています。 ``` mail("info@sample.com", $title, $body, $headers); ``` このような実装で、windows10のデフォルトのメーラおよびGmailで受信すると 正しくUTF-8の絵文字で取得できているようです。 さて、質問したいことは、 メールの差出人の送信時のエンコーディングから 最終的に 7bitの文字列であれば良いこと、且つ ``` "=?UTF-8?B?{$title}?="; ``` 上記のようなフォーマットで元の文字列が UTF-8且つ ?B?という文字列から送信したい内容がbase64エンコードされていれば良いこと。 が想定できました。 送信時のヘッダーをみると メールタイトルとメールヘッダーのFromは同一のフォーマットになっていることが わかりますが、 なぜメール本部はなんの処理をせずUTF-8のまま送信できるのでしょうか? メール関連のプロトコルにお詳しいかたご教授のほどお願いいたします。
回答: phpでのメール送信=>ヘッダが変なメールをたまに見かけます > > phpでよくメールが送られてくるのですが、気になることがあります。 > > ヘッダー上で本文は「quoted-printable」といいながら、実際の本文は > > JISコードで送られてきていることがあるのです。 > > メーラで見えればいいという考えですとこれでいいのですけれど、少しこだわってみましょう > > > メーラーは利便性のため、正しくないメールにも対応していることがあります。 このように、Content-Transfer-Encoding: quoted-printable であっても表示できることがあります。 **しかしこれはメーラーの実装に依存するもので、必ず表示できるとは限りません。** 本文を UTF8 で送るなら、Content-Transfer-Encoding: 8bit にすべきだと思います。