C # HTML E-Mail - Альтернативный вид - PullRequest
0 голосов
/ 12 ноября 2011

У меня проблема с проверкой альтернативных представлений при отправке электронных писем в формате HTML. Я создаю отправку почтового сообщения в виде простого текста, но я включаю альтернативное представление HTML. Я пытался использовать несколько почтовых клиентов, но мне не удалось увидеть текстовую версию. Моя главная проблема заключается в том, что тот, кто использует простой текстовый клиент, не увидит его правильно. Ниже приведен код:

MailMessage message = new MailMessage();

message.To.Add("email");
message.From = new MailAddress("fromaddress");
message.Subject = "subject"
//Plain text version of e-mail
message.Body = _formattedPlainText;
message.IsBodyHtml = false;

AlternateView htmlView = CreateHTMLView();

message.AlternateViews.Add(htmlView);
//message.AlternateViews.Add(plainTextView);

smtp.Send(message);

private AlternateView CreateHTMLView()
{
    AlternateView htmlView =  AlternateView.CreateAlternateViewFromString(_formattedHTML, null, System.Net.Mime.MediaTypeNames.Text.Html);

    //Code for adding embedded images...

    return htmlView;
}

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

Заранее спасибо

UPDATE:

Вы можете принудительно ввести простой текст в GMAIL, нажав стрелку параметров и выбрав параметр «Текст сообщения искажен?»

Ответы [ 2 ]

1 голос
/ 16 ноября 2016

Благодаря некоторым экспериментам у меня были лучшие результаты в этом отношении:

Настройка двух альтернативных представлений, одного HTML и одного простого текста. Затем оставьте MailMessage.Body в покое (по умолчанию / не определено) и оставьте MailMessage.IsBodyHtml по умолчанию. Мой кодовый сегмент:

                myMessage.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(HtmlMessage, new System.Net.Mime.ContentType("text/html")));
        myMessage.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(TextMessage, new System.Net.Mime.ContentType("text/plain")));
    //    myMessage.Body = HtmlMessage;
    //    myMessage.IsBodyHtml = true;
        myClient.UseDefaultCredentials = false;
        NetworkCredential credentials = new NetworkCredential("xxxx","xxxxx");
        myClient.Credentials = credentials;
        myClient.DeliveryMethod = SmtpDeliveryMethod.Network;

Я проверил это с помощью сообщений, отправляемых клиентам Windows Outlook и пользователям Mac, и, похоже, все работает нормально. Клиентское программное обеспечение электронной почты выбирает представление. Мне все еще нужно проверить, как это работает для клиентов, таких как приложения веб-почты. Ваш пробег может отличаться.

Bob

1 голос
/ 12 ноября 2011

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

Нет, и PINE .

Вы можете использовать команду mail в любой операционной системе * nix для чтения электронной почты.Он будет отображать только электронную почту в текстовом формате.

ОБНОВЛЕНИЕ

Парень здесь, утверждает, что GMAIL ТОЛЬКО отображает электронные письма в виде обычного текста, если предоставляется опция.Я считаю, что это неудобный выбор по умолчанию от Google, если это все еще так.

...