2015-07-13 5 views
2

Мне нужно написать буквы с акцентом в тело электронной почты, но кодировка utf-8 не работает. В настройках Gmail я выбрал вариант «Использовать Unicode (UTF-8) для исходящих сообщений».Ошибка кодирования с помощью Gmail SMTP и Zend Mail Message-Zend Framework 2

Я использую 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) кодировку для исходящих сообщений", но resuts такие же! Где я поступаю неправильно? Спасибо за помощь!

ответ

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); 

Я не» t понять причину, почему setEncoding('UTF-8') не работает. Существуют и другие решения?

 Смежные вопросы

  • Нет связанных вопросов^_^