7

これに対する解決策を検索して検索しましたが、役に立ちませんでした。

私はphpメーラーを使用して、utf8でエンコードされた混合テキスト/ htmlメールを送信しています。関連するコードは次のとおりです。

$headers = "From: $fromPerson\r\n" .
"Content-Transfer-Encoding: 8bit\r\n".
"Reply-To: $fromPerson\r\n" .
"Content-Type: multipart/alternative; boundary=". $mime_boundary_header. "\r\n" .
"X-Mailer: PHP/" . phpversion();

$message = "$notice_text

--$mime_boundary
Content-Type: text/plain; charset='UTF-8'
Content-Transfer-Encoding: 8bit

$textEmail

--$mime_boundary
Content-Type: text/html; charset='UTF-8'
Content-Transfer-Encoding: 8bit

$htmlEmail

--$mime_boundary--";

//mb_detect_encoding($message) returns UTF-8
$mail_sent = @mail( $to, $subject, $message, $headers);

メッセージには、これらのトリッキーな文字とともにスペイン語が含まれています。電子メールは gmail、hotmail (オンライン Outlook)、Mac メール、電話などでは問題なく表示されますが、Windows ライブ メールや Microsoft Outlook では表示されません。

Windows live メールのデフォルト フォントを手動で utf8 に設定すると、メッセージは正しく表示されますが、それ以外の場合は正しく表示されません。別のクライアントからの電子メールを Outlook または Windows Live に転送すると、問題なく表示されます。

確かに回避策を見つけることができましたが、何か不足していますか? メッセージのエンコーディングを変更する方法を受信者が知っていることに頼りたくないので、これらのクライアントにエンコーディングを認識させるためにメールに追加する必要があるものはありますか?

これが他の場所で対処されている場合は申し訳ありませんが、アドバイスをいただければ幸いです。先に進んで PHPMailer を使用して問題が解決するかどうかを確認する必要があるようですが、個人的な好奇心から、なぜこれが起こっているのかを知ることは興味深いでしょう...

4

3 に答える 3

8
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=UTF-8\r\n";
$headers .= "From: example@example.com\r\n";
$headers .= "Reply-To: example@example.com\r\n";
于 2013-11-22T10:14:49.180 に答える
4

リコの答えを変更すると、コードが少しきれいになります。

$header_array = [
    "MIME-Version: 1.0",
    "Content-type: text/html; charset=UTF-8",
    "From: example@example.com",
    "Reply-To: example@example.com"
];

$headers = implode("\r\n", $header_array);
于 2015-05-07T11:43:33.370 に答える