日前使用PHPMailer發送utf-8格式的中文郵件時, 發現收件夾內接收的郵件均為亂碼, 而且連帶影響到郵件的html內文, 原因在於E-Mail標準格式中表頭的部分不允許使用雙位元的文字(也就是中文等...), 所以必須使用mb_encode_mimeheader()函式將雙位元文字編碼為單位元字串。
但是因為mb_encode_mimeheader()預設的字串編碼為西方ISO-8859-1, 所以如果你的編碼中文字為UTF-8就必須使用mb_internal_encoding()將內部預設編碼改為UTF-8。
<?php mb_internal_encoding('UTF-8'); // 內部預設編碼改為UTF-8 $mail->Subject = mb_encode_mimeheader($_POST['title'], "UTF-8"); $mail->Body = $_POST['content']; ?>
我都用iconv去轉
回覆刪除因為有時候mb_internal_encoding 主機不支援
iconv相對比起來多一些些
瞭解, 學到一招^^
回覆刪除用法為 iconv_set_encoding("internal_encoding", "UTF-8");
回覆刪除PHPMailer 可以直接指定字集 ex:
回覆刪除$mail->CharSet = "utf-8";
這最為實用
刪除您好
回覆刪除請問郵件"內容"亂碼要如何轉換呢?
感謝您!