【问题标题】:Encoding Issue with Gmail SMTP and Zend\Mail\Message- Zend Framework 2Gmail SMTP 和 Zend\Mail\Message- Zend Framework 2 的编码问题
【发布时间】:2015-10-01 21:41:20
【问题描述】:

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

【问题讨论】:

    标签: php zend-framework2 smtp gmail zend-mail


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-01-24
      • 2014-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多