Gmail SMTP 和 Zend\Mail\Message- Zend Framework 2 的编码问题

Encoding Issue with Gmail SMTP and Zend\Mail\Message- Zend Framework 2

我需要在电子邮件正文中写入重音字母,但 utf-8 编码不起作用。在 Gmail 设置中,我 select 编辑了选项 "Use Unicode (UTF-8) for outgoing messages"。

我正在使用 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:àèéòù

我尝试select进入Gmail设置"Avoid Unicode (UTF-8) encoding for outgoing messages",但结果是一样的!我哪里做错了?感谢您的帮助!

我在这里找到了解决方案:

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') 不起作用。还有其他解决方案吗?