It is currently 8 June 2025, 0:47 Advanced search

Invio mail con content-transfer-encoding a 7 bit

Questo forum è nato con lo scopo di raccogliere le proposte di modifica di Instant Developer e discuterne insieme.

Invio mail con content-transfer-encoding a 7 bit

Postby teopost » 27 October 2010, 8:16

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:

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);
Oracle Database Administrator
User avatar
teopost
 
Posts: 211
Joined: 26 October 2010, 20:46

Re: Invio mail con content-transfer-encoding a 7 bit

Postby g.lanzi » 3 November 2010, 10:22

Bravo Teo, una bella analisi seguita dalla modifica giusta.

Ti va di postare qui tutta la classe IDMailer.cs modificata? Così se serve a qualcuno c'è già la soluzione :)
Giuseppe Lanzi
Director of Support services
Pro Gamma S.p.A.
User avatar
g.lanzi
Pro Gamma
Pro Gamma
 
Posts: 3504
Joined: 29 September 2010, 10:24
Location: Bologna

Re: Invio mail con content-transfer-encoding a 7 bit

Postby teopost » 3 November 2010, 13:13

Volentieri.
Non l'ho fatto perchè non sapevo se avevo il vostro permesso per farlo.
Allego a questa risposta uno zip che contiene la classe da mettere nella cartella App_code della custom e un progetto INDE che contiene la libreria rimappata per usare la classe.
Oltre all'aggiunta del parametro che gestisce l'encoding a 7 bit, questa classe contiene anche un parametro, rimappato anch'esso nella classe, per gestire l'invio di mail via SSL (ad esempio usando l'account di google.).
Secondo me queste modifiche dovrebbero essere riportate nello standard.
Attachments
ApexIDMailer.zip
(308.31 KiB) Downloaded 433 times
Oracle Database Administrator
User avatar
teopost
 
Posts: 211
Joined: 26 October 2010, 20:46

Re: Invio mail con content-transfer-encoding a 7 bit

Postby lucabaldini » 8 March 2011, 19:52

Grazie!
Come ho risposto anche qui il problema è che in Java le cose non sono così lineari e semplici... Inoltre raramente capita di aver bisogno di inviare e-mail con Content-Transfer-Encoding a 7 bit... e quando capita non ci vuole molto ad utilizzare un proprio mailer... Certo probabilmente è più comodo avere una proprietà della libreria Mailer che se impostata a True invii le e-mail in quel modo... ma se facessi sempre così (aggiungere proprietà o test-case per poter gestire tutte le eccezioni) avremmo librerie con migliaia di proprietà e flag. Cerchiamo sempre di inserire in libreria le funzionalità più utilizzate... forse il 7 bit non è così necessario... ma l'SSL, che vedo che altri hanno chiesto, forse occorre tenerlo presente...
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4990
Joined: 1 October 2010, 17:03
Location: Bologna

Re: Invio mail con content-transfer-encoding a 7 bit

Postby lucabaldini » 8 March 2011, 19:53

Grazie!
Come ho risposto anche qui il problema è che in Java le


ho scritto "qui" ma poi non ho inserito il link! Eccolo... http://forum.progamma.com/viewtopic.php?f=5&t=160
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4990
Joined: 1 October 2010, 17:03
Location: Bologna


Return to Proposte di modifica

Who is online

Users browsing this forum: No registered users and 9 guests

cron