我使用 PHP 的 mail() 函数发送电子邮件。我需要将 from 字段编码为 UTF-8,因此我设置了这些邮件标头:
function mail_headers($from, $contentType = "text/plain") {
$headers = "From: ".mime_header_encode($from)."\n";
$headers .= 'Reply-To: '.mime_header_encode($from)."\n";
$headers .= 'MIME-Version: 1.0' ."\n";
$headers .= 'Content-Type: '.$contentType.'; charset=utf-8' ."\n";
$headers .= 'Content-Transfer-Encoding: 8bit'. "\n";
return $headers;
}
function mime_header_encode($text, $encoding = "utf-8") {
return "=?$encoding?Q?" . imap_8bit($text) . "?=";
}
它在我的 PC 上运行良好,但在生产服务器上不太好。它不会将编码字符串识别=?utf-8?Q?Website name <info@myshop.com>?=
为有效的电子邮件,因此它会尝试使其变得更好。服务器最终将发送一封带有这部分标题的电子邮件:
From: =?utf-8?Q?Website name <info@myshop.com>,
?=@hosting-domain.com
使用此标头,电子邮件收件人会看到另一个奇怪的发件人(逗号后的字符串)。我可以让 PHP 不触摸我的电子邮件字符串吗?
谢谢!