Зачем кодировать тип содержимого заголовков: text/html; отсутствует при использовании MailItem в плагине Outlook с SMTP-сервером GMAIL: SMTP.GMAIL.COM?

Я пытаюсь отправить HTML на учетную запись gmail, с SMTP-сервера gmail.

Если я напишу такой код и отправлю HTML, проблем не будет.

        MailMessage mail = new MailMessage("[email protected]", to, subject, body);
        mail.IsBodyHtml = true;
        SmtpClient smtpClient = new SmtpClient(smtp);
        smtpClient.EnableSsl = true;

        smtpClient.Port = 587;
        smtpClient.Credentials = new NetworkCredential(userName, password);
        smtpClient.Send(mail);

Электронная почта, полученная в учетной записи gmail, находится в формате base64 с заголовками:

Subject: Test
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: base64

PGh0bWw== (эта база 64 недействительна, она только для вопроса)

Но если я использую Outlook.MailItem для отправки своей электронной почты, я получаю то, что...

Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


   <https://fdsafasdfasd.com/images/logo.png> =09

Cedric Boivin


[email protected]


Vous a envoy=E9 un message s=E9curis=E9 vifdasfasdfes

Мой текст виден в чистом виде, а не в HTML в Gmail. В плагине Outlook есть мой код

 Microsoft.Office.Interop.Outlook.MailItem newMail = Globals.ThisAddIn.Application.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
                // newMail.Display(false);                                        
                newMail.Subject = subject;

                newMail.To = email.ToLower().Trim();
                newMail.Recipients.ResolveAll();
                newMail.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML;
                newMail.HTMLBody = htmlBody;
                newMail.Send();

Любое предложение ?


person Cédric Boivin    schedule 27.07.2017    source источник


Ответы (2)


Я протестировал ваш почтовый код Outlook для отправки писем, и я могу правильно видеть письма в формате HTML в своей учетной записи gmail. Моя среда: VS 2015/Outlook 2016

Интересно, что в своем тестировании я вижу и то, и другое — Content-Type: text/plain; и Content-Type: text/html;. Код просто устанавливает только HtmlBody.

введите здесь описание изображения

После того, как вы отправили почту, если вы посмотрите на свои «Отправленные» в Outlook, каков формат почты?

Возможно, что-то в ваших настройках Outlook преобразует его в обычный текст! В более ранней версии Outlook есть возможность конвертировать в обычный текст для определенных пользователей. Вы случайно не используете какую-либо из этих версий и эта опция включена?

В моем тестировании я получаю ваше поведение, только если я устанавливаю .Body вместо .HtmlBody, то есть newMail.Body = htmlBody;

person Subbu    schedule 31.07.2017

Я нашел проблему.

В моем электронном письме для отправки мне были установлены некоторые свойства для mailItem.

Это было связано с этой статьей...

Запретить использование winmail.dat в Outlook (для учетных записей gmail)

если я удалю их ... все работает нормально.

person Cédric Boivin    schedule 02.08.2017
comment
Молодец, может быть, свяжешься с этим ответом по вариантам, которые ты задал, обязательно помогу кому-то в будущем. - person Jeremy Thompson; 04.08.2017