后缀字符编码?

我使用Postfix作为邮件服务器。 我有Ubuntu操作系统。

然后我使用PHP发送电子邮件

问题是我的电子邮件没有被我的VPS提供商使用的邮件软件正确编码。

据他们说,问题在于我。

这只是名称字段不正确编码。 例如,“Björn”在我的电子邮件中变成了“Björn”。

但是,当我回显$name ,输出“ Björn ”,这是正确的。

另外,Gmail和Hotmail的确显示正确。

奇怪的部分是“文本”(消息本身)编码正确。

我使用以下发送邮件:

 $headers="MIME-Version: 1.0"."\n"; $headers.="Content-type: text/plain; charset=UTF-8"."\n"; $headers.="From: $name <$email>"."\n"; $name= iconv(mb_detect_encoding($name), "UTF-8//IGNORE//TRANSLIT", $name); //// I HAVE TRIED WITH AND WITHOUT THE LINE ABOVE, NO DIFFERENCE mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $text, $headers, '[email protected]'); 

我已经尝试过,也没有iconv行,也没有运气。

我能想到的最后一件事是POSTFIX ,那里可以设置字符编码吗? 有人知道吗?

我看到的一个问题是,在$headersembedded$name ,您已经将$name转换$name UTF-8。 那么发送到postfix的是之前的内容。 你应该iconv()它,并添加到$headers 之前 ,它的MIME编码。

消息文本可以是您定义的任何字符集(因为您在邮件头中定义了邮件的字符集(content-type = utf8),但头文件(subject,from – name,email)在客户机中定义Gmail正在使用utf8作为默认,而其他正在查看电子邮件的客户端可以使用任何他们喜欢的东西,基本上只有ASCII字符是完全支持到处。

编辑:如果它们是MIME编码(“=?charset?encoding?encoded text?=”),则可以在邮件标题中包含US-ASCII之外的字符