Я отправляю электронное письмо через C# SMTP. Это HTML электронное письмо, которое разделяет строки на
теги, например:
Уважаемый тест,
Для вашей учетной записи инициирован запрос пароля. Пожалуйста, нажмите на эту ссылку ....
Это нормально отображается в папке входящих сообщений Outlook, но в Gmail, похоже, игнорирует теги
:
Gmail
Outlook
Почему 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, по-видимому, отображает только текстовую версию электронной почты?