Подтвердить что ты не робот

С# Отправить и 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("[email protected]", "Sender");

    MailAddress recipient =
        new MailAddress("[email protected]", "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 <img> tag...
    string htmlBody =
        "<html><body><h1>Picture</h1><br>" +
        "<img src=\"cid:SampleImage\"></body></html>";

    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
    // <img src=\"cid:SampleImage\"> 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")
          };

    //<system.net>
    //    <mailSettings>
    //        <smtp deliveryMethod="Network">
    //            <network host="smtp.example.com"
    //              port="25" defaultCredentials="true"/>
    //        </smtp>
    //    </mailSettings>
    //</system.net>

    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);
}
4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

Несколько почтовых клиентов будут использовать последний AlternateView, который был добавлен в AlternateView.

Итак, если вы предпочитаете, чтобы ваша почта отображалась как HTML, обязательно добавьте ее последним.

Я заметил это для почты IOS и почты OSX, в то время как Android Email, похоже, предпочитает HTML, если он доступен. Я не уверен, для каких версий это относится, и поведение часто настраивается пользователем, но по моему опыту это были значения по умолчанию.