Отправка электронной почты с использованием почтовой программы Swift в Yii2 отправила неправильное содержимое электронной почты

Я использую почтовую программу Swift для отправки электронной почты из своих веб-приложений на основе Yii2. Но он не может правильно читать / получать в MS Outlook.

См. Текст сообщения электронной почты, полученный мной с помощью MS Outlook 2010:

--_=_swift_v4_1430198154_31f7ff2886dc0fb65796db153d9434096acbae54_=_
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Dear Admin,=20
User John has been si= gned up
successfully.

Thanks,
The App Tea=
m

This message was sent to [email protected]. If y= ou don't want
to receive future emails from ABC, please unsubs= cribe.


--_=_swift_v4_1430198154_31f7ff2886dc0fb65796db153d9434096acbae54_=_
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.=
org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns=3D"http://www.w3.org=
/1999/xhtml">
<head>
<meta http-equiv=3D"Content-Type" con= tent=3D"text/html;
charset=3DUTF-8" />
<title></title>
<=
/head>
<body>
    Dear Admin, <br>
<p>User John has been signed up successfully.</p>

<=
p>Thanks,</p>
<p>The ABC Team</p>

<br><br><br> =

=09
<p style=3D'color: #B6B6B6'>
    This message was sent to =
[email protected]. If you don't want to receive future emai= ls
from ABC, please <a href=3D'#'>unsubscribe</a>.
</p> =



</body>
</html>


--_=_swift_v4_1430198154_31f7ff2886dc0fb65796db153d9434096acbae54_=_--

Я использую следующую конфигурацию для кодирования:

 'messageConfig' => [
    'charset' => 'UTF-8',
],

И отправка с использованием -

Yii::$app->mailer->compose('mailview', ['name' => $name]) 
            ->setFrom([\Yii::$app->params['adminEmail'] => \Yii::$app->name . ' App'])
            ->setTo($to)
            ->setSubject($subject)
            ->send();

Что мне не хватает?


person The Coder    schedule 28.04.2015    source источник
comment
при каких обстоятельствах возникает проблема?   -  person Tharif    schedule 28.04.2015
comment
Спасибо. Иногда он отправляет электронное письмо в правильном читаемом формате, но иногда оно отправляется так, как указано в вопросе.   -  person The Coder    schedule 28.04.2015
comment
Я столкнулся с аналогичной проблемой, когда сгенерированное электронное письмо содержит множество дополнительных символов «=» и «3D» в произвольных позициях. Найдены какие-нибудь идеи или причины?   -  person Mushtaq Hussain    schedule 06.11.2015
comment
Эй, у меня похожая проблема, какое решение!   -  person sprytechies    schedule 05.03.2016


Ответы (1)


мне помогает только метод setHtmlBoby (), потому что пример из документации отправляет 3 заголовка с повторяющимся содержимым:

  1. Тип содержимого: составной / альтернативный;
  2. Тип содержимого: текст / обычный; charset = utf-8
  3. Тип содержимого: текст / html; charset = utf-8

Ниже пример кода:

//render view content
$htmlMailContent = $this->renderPartial('@common/mail/passwordCreateToken-html', ['user' => $model]);
//render layout
$htmlMail = $this->renderPartial('@common/mail/layouts/html', ['content' => $htmlMailContent]);

$mailResult = Yii::$app->mailer->compose()
    ->setFrom([Yii::$app->params['supportEmail'] => Yii::$app->name . ' robot'])
    ->setTo($model->email)
    ->setSubject('Password reset for ' . Yii::$app->name)
    ->setHtmlBody($htmlMail) //set here mail with layout
    ->send();
person dev31    schedule 29.06.2016
comment
см. метод compose() на github.com/yiisoft/yii2/blob/ мастер / framework / mail / - person dev31; 29.06.2016