Invio mail con content-transfer-encoding...
copia linkProponente | 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
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