Domanda C # Invia sia l'email HTML che quella di testo - la più elegante?


È consigliabile inviare e-mail sia in formato HTML sia in testo?

Se invio solo HTML quali sono i pericoli?

Sto pensando qualcosa di simile qui sotto

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

20
2017-08-11 07:50


origine


risposte:


Direi che, nel mondo di oggi, l'approccio "best-practice" sarebbe quello di garantire che invii il tuo messaggio come entrambi testo normale e HTML (se si desidera veramente inviare messaggi di posta elettronica HTML).

Oh, e assicurati di mandare effettivamente il soddisfare nella visualizzazione di testo semplice, piuttosto che una singola frase che dice "Devi usare un client di posta elettronica che supporti i messaggi HTML". Google Mail adotta questo approccio e sembra funzionare perfettamente, consentendo visualizzazioni "ricche" su client PC completi, consentendo al tempo stesso visualizzazioni "minime" su dispositivi più limitati (ad es. Telefoni cellulari / cellulari).

Se si vuole prendere in considerazione il purista, non si invierà alcuna e-mail HTML, né si collegherà mai un file binario a un'e-mail. Entrambe le corruzioni dello standard email originale, che è stato sempre e solo originariamente inteso per il testo normale. (Vedi le opinioni di alcune persone su questo Qui e Qui)

Tuttavia, nel mondo reale pragmatico dei giorni nostri, l'email HTML è molto reale e molto accettabile. L'aspetto negativo principale dell'invio di e-mail HTML è se il destinatario vedrà l'e-mail nel modo in cui si intendeva vederlo. Questo è lo stesso problema con cui i web designer hanno combattuto per anni; facendo in modo che i loro siti web appaiano "giusti" in tutti i browser possibili (anche se è molto più facile oggi rispetto a molti anni fa).

Simile a garantire che un sito web funzioni correttamente senza richiedere Javascript, inviando le tue e-mail sia in formato HTML che in testo normale, ti assicurerai che le tue e-mail degradare con grazia in modo che le persone che leggono le loro e-mail su (ad esempio) piccoli dispositivi mobili (qualcosa che sta diventando sempre più diffuso in questi giorni - e che può o meno essere in grado di rendere un messaggio HTML completo) possono comunque leggere il contenuto della tua e-mail senza problemi.


18
2017-08-11 08:14



Se si invia solo HTML, chiunque leggerà la posta elettronica su un dispositivo di solo testo avrà problemi.

Ad esempio, sospetto che molti dispositivi mobili di fascia bassa siano in grado di leggere e-mail ma non visualizzare l'intero codice HTML.

Direi che è la migliore pratica per o invia solo testo o testo e HTML.

Non vedo perché stai riscontrando un sacco di eccezioni solo per riproporre lo stesso tipo di eccezione con un messaggio diverso, a proposito: il messaggio originale potrebbe essere più descrittivo.


4
2017-08-11 07:53



Un altro motivo per inviare entrambi è che molti server di posta segnano le e-mail che contengono solo contenuto HTML come spam. Non vuoi che tutte le tue e-mail vengano inserite nella cartella della posta indesiderata.


3
2017-08-11 08:03



Penso di sì, la migliore pratica è quella di inviare entrambi. Il motivo (c & p da wikipedia):

Il formato e-mail predefinito in base a RFC 2822 è testo normale. così   il software e-mail non è necessario per supportare la formattazione HTML. invio   Le e-mail in formato HTML possono quindi causare problemi al   destinatario se è uno di quei client che non lo supportano. In   Nel peggiore dei casi, il destinatario vedrà il codice HTML invece del   messaggio previsto


3
2017-08-11 07:55



Diversi client di posta elettronica utilizzeranno l'ultima AlternateView che è stata aggiunta a AlternateViews.

Quindi, se preferisci che la tua posta sia visualizzata come HTML, assicurati di aggiungerla per ultima.

Ho notato questo per posta IOS e posta OSX, mentre Android Email sembra preferire HTML se è disponibile. Non sono sicuro di quali versioni detenga e il comportamento è spesso configurabile dall'utente, ma nella mia esperienza queste erano le impostazioni predefinite.


0
2017-10-21 11:30



Condividere la mia esperienza con l'invio di HTML e testo in un'unica email: Ho creato un messaggio di posta elettronica con 2 visualizzazioni: testo e html utilizzando le classi C # AlternateView.

Cosa ho ricevuto?

Su Mac, testato su High Sierra: L'app di Apple Mail mostrava l'Html. Se l'ordine dei messaggi è invertito: HTML - testo quindi Apple Mail mostrerà la visualizzazione del testo. La conclusione: Apple Mail sta usando l'ultima vista come predefinita.

In Windows, Outlook 2010: Microsoft Outlook utilizza per impostazione predefinita la vista Html. L'ordine delle visualizzazioni nell'e-mail non ha importanza: html, text; testo, HTML;

Se per qualche motivo hai selezionato un'impostazione per mostrare i messaggi in arrivo come testo, la versione Html della tua e-mail sarà convertita nel testo da Outlook. Anche se invii la versione di testo della tua e-mail (che potrebbe essere leggermente diversa dalla versione HTML ed è stata formattata per apparire carina) non verrà utilizzata.

Quindi non è necessario inviare la versione di testo della tua e-mail se sai che i tuoi clienti usano Outlook e la versione Html è selezionata come predefinita.

Mozilla Thunderbird rispetta le tue impostazioni e mostra la versione HTML o di testo corretta della tua email. Funziona correttamente su Mac e Windows

Spero che sia d'aiuto


0
2018-06-03 22:29