我需要在电子邮件正文中写下重音字母,但utf-8编码不起作用。在Gmail设置中,我选择了选项"使用Unicode(UTF-8)传出邮件"。
我使用的是Gmail SMTP和Zend \ Mail \ Messsage。我尝试了4种不同的方法,但不是一种方法。
完整功能:
public function sendRegistrationEmail(){
$message = new Message();
$message->addTo($this->email)
->addFrom(self::FROM)
->setSubject($this->subject)
->setEncoding('UTF-8')
->setBody('àèéòù');
$transport = new SmtpTransport();
$options = new SmtpOptions($this->smtp);
$transport->setOptions($options);
$transport->send($message);
}
1:
->setBody('àèéòù');
output: à èéòù
2:
->setBody(utf8_encode('àèéòù'));
output: àèéòù
3:
->setEncoding('UTF-8')
->setBody('àèéòù');
output: à èéòù
4:
->setEncoding('UTF-8')
->setBody(utf8_encode('àèéòù'));
output:àèéòù
我尝试选择进入Gmail设置"避免使用Unicode(UTF-8)编码来处理外发邮件"但这些结果是相同的!我哪里做错了?谢谢你的帮助!
答案 0 :(得分:2)
我在这里找到了一个解决方案:
http://framework.zend.com/manual/current/en/modules/zend.mail.message.html
如果我需要使用html电子邮件:
$html = new MimePart($htmlMarkup);
$html->type = "text/html; charset = UTF-8";
否则,纯文本电子邮件:
$text = new MimePart($textContent);
$text->type = "text/plain; charset = UTF-8";
$body = new MimeMessage();
$body->setParts(array($text or $html));
.....rest of message instance....
->setBody($body);
我不明白setEncoding('UTF-8')
无效的原因。还有其他解决方案吗?