當我發送包含使用PHP郵件£的電子郵件時,它以outlook的形式出現在outlook/hotmail中。在Gmail/Thunderbird中沒問題。PHP發送電子郵件主題 - Hotmail/Outlook顯示£爲£
任何想法如何解決這個問題?就在今天
當我發送包含使用PHP郵件£的電子郵件時,它以outlook的形式出現在outlook/hotmail中。在Gmail/Thunderbird中沒問題。PHP發送電子郵件主題 - Hotmail/Outlook顯示£爲£
任何想法如何解決這個問題?就在今天
的問題是,客戶端不知道是什麼編碼用於對主題進行編碼。無論您的應用程序設置在Content-Type
標頭中,只適用於電子郵件的正文,而不是標題。
通常這會影響以下標題:
爲了使用不同的編碼的國際化標題行應MIME編碼(截至RFC 2047),使用以下兩種方法之一:base64(B)或修改的quoted-printable(Q)。編碼後的患者通常是這樣的:
Subject: =?ISO-8859-1?Q?Pr=FCfung_f=FCr?= Entwerfen von einer MIME kopfzeile
這看起來很難,但在PHP中一個非常有用的輔助功能,做所有的魔法:
或者你可以考慮討論下:
使用quoted_printable_encode()
直接與你啃老族,長期線需要在一定的長度被拆分的空間需要用下劃線替換爲「考慮到之前_ 」。
我固定一個類似主題的編碼問題通過使用phpmailer而不是PHP的內置mail
:
$mail = new PHPMailer(true);
$mail->IsSMTP();
$mail->CharSet = "utf8";
$mail->Subject = $mail->EncodeHeader("You won £10000000!");
....
$retval = $mail->Send();
嘗試使用UTF-8編碼的電子郵件。
我通常使用mb_convert_encoding()
功能
mb_convert_encoding($string, "UTF-8"); //AUTO DETECT AND CONVERT
mb_convert_encoding($string, "UTF-8", "latin1"); //MANUAL SET - CHANGE latin1 TO CURRENT ENCODING
這是您使用此文爲我的
<?php $subject = "=?UTF-8?B?" . base64_encode($subject) . "?="; ?>
什麼字符編碼的結果嗎? – jimw 2012-04-16 21:42:51
這是一個UTF問題 - 您正在使用某些OTHER字符集的文檔中嵌入UTF-8字符。 – 2012-04-16 21:56:18