English
Instant Developer Foundation Documentazione
  • Community
  • Evoluzione In:de
  • Richieste di modifica
  • Altro

Invio mail con content-transfer-encoding...

copia link
Proponente Stato Grado d'interesse Diff. Riferimenti
Stefano Teodorani - Apex-Net Srl stato (0 voti) 3 IDE Ambito -  Miglioramento  -  Tipo 443  

Titolo

Invio mail con content-transfer-encoding a 7 bit


Descrizione

Mail quoted-printable e Content-Transfer-Encoding a 7 bit

Se si invia una e-mail con le funzioni messe a disposizioni da INDE, vi potrebbe essere capitato il problema descritto di seguito.

Il destinatario potrebbe ricevere un messaggio incomprensibile, in cui i new line non vengono riconosciuti correttamente e, al suo posto,
vengono visualizzati alcuni caratteri strani.

Esempio:

Questo è un messaggio di prova .= 0D = 0ANuova linea
dovrebbe iniziare qui .= 0D = 0A

Tuttavia, quando si apre la posta usando outlook, il testo viene mostrato correttamente.

In realtà non colpa di INDE.

Se si apre il messaggio con un editor di testo, si nota che nell'header di un messaggio di questo tipo c'è scritto:

Content-Transfer-Encoding: quoted-printable

Ebbene l'invio di mail che contengono questa intestazione nel messaggio non sono sempre riconosciute da tutti i client di posta o dai mail server
che ne effettuano lo smistamento (esempio: postfix)

Questo problema è stato introdotto con il passaggio al Framework 2.0.
La versione precedente infatti (1.1) inviata mail con il Content-Transfer-Encoding impostato a 7 bit.

Dovendo risolvere questo problema con un cliente che ha un mail server molto datato che non vuole cambiare,
ho cercato in rete e ho trovato molte persone con lo stesso problema.

Alla fine, per riuscire a risolvere, ho dovuto modificare la classe originale di INDE per l'invio delle poste che mi è stata gentilmente fornita da Progamma.

Tuttavia ritengo che sia sensato introdurre anche nella classe standard.

Riporto nell'esempio la modifica al codice che ho fatto nella classe IDMailer.cs

Allego alcune risorse che mi hanno aiutato nella risoluzione del problema

http://en.wikipedia.org/wiki/Quoted-printable
http://ask-leo.com/why_does_my_email_sometimes_show_up_with_funny_characters_like_0d_in_it.html
http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/43957750-a967-4f1e-8eaf-86de11542c7b
http://www.rfc-editor.org/rfc/rfc1521.txt
http://linux.colocation.hinet.net/~happyman/mirrors/notes/email.html
http://idevelopdotnet.wordpress.com/


Beneficio della modifica

Maggiore compatibilità con i mail server datati

Esempio di codice

// Modifica Apex-net
if (SevenBitMultiPart == true )
{
AlternateView av = AlternateView.CreateAlternateViewFromString(msg.Body, Encoding.GetEncoding("iso-8859-1"), "text/plain");
av.TransferEncoding = System.Net.Mime.TransferEncoding.SevenBit;
msg.AlternateViews.Add(av);
}
// Fine Modifica

if (CustomEncoding != null)
{
msg.SubjectEncoding = CustomEncoding;
msg.BodyEncoding = CustomEncoding;
}
//
// Spedisco il messaggio
client.Send(msg);

Commenti

Attenzione, questo articolo è stato dichiarato obsoleto! Ultima modifica: 26/10/2010 / Validità: da 8.1.3650