UTF-8通过电子邮件发送到Mac Mail和Gmail

时间:2010-04-03 17:53:07

标签: php email utf-8 pear html-email

我正在使用Pear mail_mime发送HTML电子邮件,首先在Gmail中搞砸了UTF-8字符,但在Mac Mail中没有。我发现我需要在get()函数中添加参数来纠正MIME消息的HTML部分中使用的字符集。它违反了ISO。

所以,我已经纠正了这个问题,电子邮件来源看起来正确,Gmail工作正常,但现在莫名其妙地Mac Mail有问题,尽管它之前使用了错误的声明字符集。我尝试了很多不同的东西,包括回到错误的字符集,但Mac Mail仍然无法正确呈现消息。

有没有人对可能导致这种情况的原因有任何想法?

这是代码,HTML在此之前设置:

$params["host"] = "xxx";
$params["auth"] = true;
$params["username"] = "xxx";
$params["password"] = "xxx";
$params["html_charset"] = "utf-8";
$params["head_charset"] = "utf-8";
$params["text_charset"] = "utf-8";

$text = 'Text version of email';
$crlf = "\n";

$hdrs = array(
        'From'    => 'xxx',
        'Subject' => 'xxx'
        );

$mime = new Mail_mime($crlf);

$mime->setTXTBody($text);
$mime->setHTMLBody($html);

$body = $mime->get($params);
$hdrs = $mime->headers($hdrs);

$mail =& Mail::factory('smtp', $params);
$send = $mail->send($to, $hdrs, $body);
if (PEAR::isError($send)) { print($send->getMessage());} else echo "Mail sent to: $to";

1 个答案:

答案 0 :(得分:0)

在标题数组中包含内容类型和carset,以下内容应该可以使用,但我还没有对其进行测试。

$hdrs = array(
    'From'    => 'xxx',
    'Subject' => 'xxx',
    'Content-Type' => 'text/html',
    'charset' => 'UTF-8',
);