mail() 没有正确发送邮件正文,主题——好的
Posted
技术标签:
【中文标题】mail() 没有正确发送邮件正文,主题——好的【英文标题】:mail() doesn't send message body correctly, subject -- ok 【发布时间】:2016-05-14 23:58:12 【问题描述】:脚本从 webform 获取数据并将其发送到邮件客户端和 crm。来自网络表单的数据是西里尔文。
我想不通的是为什么我确实收到了$email_subject
,"Заголовок"
,和$email_message
,而不是"Сообщение"
——我得到"СообÑение"
或"=?utf-8?B?0KHQvtC+0LHRidC10L3QuNC1Cgo=?="
,具体取决于编码方法。
echo mb_detect_encoding($email_message);
表明 $email_message 是 utf-8。
$email_to = "mail@mail.zu";
$email_subject = "=?UTF-8?B?".base64_encode("Заголовок")."?=";
//... here goes some code for taking data from webform, checking etc.
$email_message = "=?UTF-8?B?".base64_encode("Сообщение")."?=";
//I have also tried $email_message = mb_convert_encoding("Сообщение", "utf-8","AUTO");
$headers = 'От: '.$email_from."\r\n".
'Ответить: '.$email_from."\r\n" .
mail($email_to, $email_subject, $email_message, $headers);
【问题讨论】:
try with (mb_convert_encoding("Сообщение", "utf-8")
,因为它在我的本地显示正确。
正如我所提到的,//我也尝试过 $email_message = mb_convert_encoding("Сообщение", "utf-8","AUTO");并且没有自动也..
【参考方案1】:
您好,允许邮件标头发送 utf-8 字符集在您的标头中添加这些行
$headers = "Content-Type: text/html; charset=UTF-8";
也推荐你How to send UTF-8 email?
【讨论】:
是的,我有,忘了复制:'$headers .= "\n".'MIME-Version: 1.0'."\n".'Content-Type: text/html; charset="UTF-8";'."\n".'Content-Transfer-Encoding: base64';'【参考方案2】:这个
iconv ('utf-8', 'ISO-8859-5', $str);
帮助。虽然我之前尝试过,但似乎我选择了不合适的 ISO- 是错误的。让我感到困惑的是,与 CRM 相比,使用 Outlook、Mail 或网络邮件(如 gmail)等邮件客户端没有问题。 现在一切正常。
【讨论】:
以上是关于mail() 没有正确发送邮件正文,主题——好的的主要内容,如果未能解决你的问题,请参考以下文章
如何利用linux 的mail命令发送带格式(比如正文的字体,大小等)的邮件呢?