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

标签 php zend-framework2 smtp gmail zend-mail

我需要将重音字母写入电子邮件正文,但 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) 编码”,但结果是相同的!我哪里做错了?感谢您的帮助!

最佳答案

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

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

关于php - Gmail SMTP 和 Zend\Mail\Message 的编码问题 - Zend Framework 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31386524/

相关文章:

css - Zend Framework 2 - 向 Controller 添加样式

php - 从学说和 native mysql 查询中获取最后插入的 ID

PHP 7查询JSON数据类型mysql

sql-server - 通过 Linux 从 Zend2 访问 MSSQL

zend-framework2 - Zend Framework 2 Twig 翻译

c# - "SmtpFailedRecipientException: Mailbox unavailable"邮箱可用时

python - 使用 Python 通过邮件发送的附件图像

java - 是什么阻止了我的 Java 邮件?

php - 显示外部表的前 4 列

php - 多对多查询mysql返回重复行