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:
- Code: Select all
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.
Questo non è un comportamento dovuto ad un anomalia 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:
- Code: Select all
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/
- Code: Select all
// 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);