SMTP HTML электронная почта не отображается HTML через почтовый клиент Gmail - PullRequest
2 голосов
/ 26 марта 2020

Я отправляю электронное письмо через C# SMTP. Это HTML электронное письмо, которое разделяет строки на
теги, например:

Уважаемый тест,

Для вашей учетной записи инициирован запрос пароля. Пожалуйста, нажмите на эту ссылку ....

Это нормально отображается в папке входящих сообщений Outlook, но в Gmail, похоже, игнорирует теги
:

Gmail p

Outlook enter image description here

Почему Gmail не отображает HTML? Это тот же результат через веб-браузер, что и для почтового клиента Android.

Когда я просматриваю источник электронного письма Gmail и загружаю файл .eml из Gmail, оно содержит теги br.

Я пытался заменить теги br на разрывы строк, но когда я это делаю, происходит обратное - разрывы строк в Outlook не отображаются, а отображаются в Gmail.

Что на самом деле здесь происходит и как я могу удовлетворить все почтовые клиенты?

Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

Вот мой C# для генерации писем:

var mailMessage = new MailMessage
{
    Subject = subject,
    BodyEncoding = Encoding.UTF8,
    From = new MailAddress(EmailFrom),
    IsBodyHtml = true
};

var htmlView = AlternateView.CreateAlternateViewFromString(body.ReplaceLineBreaksWithHtmlLineBreak(), new ContentType("text/html"));
htmlView.ContentType.CharSet = Encoding.UTF8.WebName;
mailMessage.AlternateViews.Add(htmlView);

var plainView = AlternateView.CreateAlternateViewFromString(body.StripHtml(), new ContentType("text/plain"));
plainView.ContentType.CharSet = Encoding.UTF8.WebName;
mailMessage.AlternateViews.Add(plainView);

Для письма HTML я заменяю разрывы строк в строке шаблона на теги br. Для простого текста любой HTML удаляется.

ОБНОВЛЕНИЕ: Оказывается, на моем открытом тексте я случайно зачеркнул разрывы строк. Это решает проблему, но другой вопрос, который у меня возникает, заключается в том, почему Gmail, по-видимому, отображает только текстовую версию электронной почты?

...