C# Отправляют и HTML и текстовую электронную почту - самый изящный?

Лучшая практика, должен отправить и HTML и текстовую электронную почту?

Если я только отправляю HTML, каковы опасности?

Я думаю что-то вроде этого ниже от

http://johnnycoder.com/blog/2009/04/15/net-mailmessage-linkedresources-alternateviews-and-exceptions/

try
{
    // Assign a sender, recipient and subject to new mail message
    MailAddress sender =
        new MailAddress("sender@johnnycoder.com", "Sender");

    MailAddress recipient =
        new MailAddress("recipient@johnnycoder.com", "Recipient");

    MailMessage m = new MailMessage(sender, recipient);
    m.Subject = "Test Message";

    // Define the plain text alternate view and add to message
    string plainTextBody =
        "You must use an email client that supports HTML messages";

    AlternateView plainTextView =
        AlternateView.CreateAlternateViewFromString(
            plainTextBody, null, MediaTypeNames.Text.Plain);

    m.AlternateViews.Add(plainTextView);

    // Define the html alternate view with embedded image and
    // add to message. To reference images attached as linked
    // resources from your HTML message body, use "cid:contentID"
    // in the  tag...
    string htmlBody =
        "

Picture


" + ""; AlternateView htmlView = AlternateView.CreateAlternateViewFromString( htmlBody, null, MediaTypeNames.Text.Html); // ...and then define the actual LinkedResource matching the // ContentID property as found in the image tag. In this case, // the HTML message includes the tag // and the following // LinkedResource.ContentId is set to "SampleImage" LinkedResource sampleImage = new LinkedResource("sample.jpg", MediaTypeNames.Image.Jpeg); sampleImage.ContentId = "SampleImage"; htmlView.LinkedResources.Add(sampleImage); m.AlternateViews.Add(htmlView); // Finally, configure smtp or alternatively use the // system.net mailSettings SmtpClient smtp = new SmtpClient { Host = "smtp.example.com", UseDefaultCredentials = false, Credentials = new NetworkCredential("username", "password") }; // // // // // // // smtp.Send(m); } catch (ArgumentException) { throw new ArgumentException("Undefined sender and/or recipient."); } catch (FormatException) { throw new FormatException("Invalid sender and/or recipient."); } catch (InvalidOperationException) { throw new InvalidOperationException("Undefined SMTP server."); } catch (SmtpFailedRecipientException) { throw new SmtpFailedRecipientException( "The mail server says that there is no mailbox for recipient"); } catch (SmtpException ex) { // Invalid hostnames result in a WebException InnerException that // provides a more descriptive error, so get the base exception Exception inner = ex.GetBaseException(); throw new SmtpException("Could not send message: " + inner.Message); }

21
задан abatishchev 11 August 2010 в 07:58
поделиться

4 ответа

Я бы сказал, что в сегодняшнем мире "передовой" подход заключается в том, чтобы гарантировать, что вы отправляете свое сообщение как как в виде обычного текста, так и в формате HTML (если вы действительно хочу отправлять сообщения электронной почты в формате HTML).

Да, и убедитесь, что вы действительно отправляете контент в виде обычного текста, а не в виде одного предложения, в котором говорится: «Вы должны использовать почтовый клиент, поддерживающий сообщения HTML». Google Mail использует этот подход, и он, кажется, работает отлично, обеспечивая "расширенные" просмотры на полнофункциональных клиентах для ПК, а также разрешая "минимальные" просмотры на устройствах с ограниченным доступом (например, мобильные / сотовые телефоны).

Если вы хотите придерживаться точки зрения пуриста, вы бы вообще не отправляли электронные письма в формате HTML и не «прикрепляли» к письму двоичный файл. Оба искажения исходного стандарта электронной почты, который когда-либо изначально предназначался только для обычного текста. (См. Мнения некоторых людей об этом здесь и здесь )

Однако в прагматичном современном реальном мире электронная почта в формате HTML очень реальна и очень приемлема. Основным недостатком отправки электронной почты в формате HTML является то, увидит ли получатель электронное письмо так, как вы хотели его видеть.Это почти та же проблема, с которой веб-дизайнеры боролись годами; добиться того, чтобы их веб-сайты выглядели «правильно» во всех возможных браузерах (хотя сегодня это значительно проще, чем это было много лет назад).

Подобно обеспечению правильной работы веб-сайта без использования Javascript, отправляя электронные письма как в формате HTML, так и в виде обычного текста, вы гарантируете, что ваши электронные письма будут корректно ухудшаться , чтобы люди читая их электронные письма (например) на небольших мобильных устройствах (что в наши дни становится все более распространенным - и которые могут или не могут быть способны отображать полное электронное письмо в формате HTML), все же могут без проблем читать содержимое вашей электронной почты.

18
ответ дан 29 November 2019 в 21:31
поделиться

Думаю, да, лучше всего отправить оба. Причина (c & p из википедии):

Формат электронной почты по умолчанию согласно RFC 2822 - простой текст. Таким образом программное обеспечение электронной почты не требуется для поддержки форматирования HTML. Отправка Поэтому электронные письма в формате HTML могут вызвать проблемы конец получателя, если это один из тех клиентов, которые его не поддерживают. В в худшем случае получатель увидит HTML-код вместо предполагаемое сообщение.

3
ответ дан 29 November 2019 в 21:31
поделиться

Если вы отправляете только HTML, то у любого, кто читает электронную почту на устройстве, использующем только текст, будут проблемы.

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

Я бы сказал, что лучшей практикой является либо отправка только текста, либо текста и HTML.

Кстати, я не понимаю, зачем вы ловите кучу исключений только для того, чтобы повторно выкинуть исключение того же типа с другим сообщением - исходное сообщение вполне может быть более описательным.

4
ответ дан 29 November 2019 в 21:31
поделиться

Еще одна причина для отправки обоих состоит в том, что многие почтовые серверы помечают электронные письма, которые содержат только HTML-контент, как спам. Вы же не хотите, чтобы все ваши электронные письма помещались в папку нежелательной почты.

3
ответ дан 29 November 2019 в 21:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: