2008-09-12 10 views
6

Ho scritto del codice nell'applicazione VB.NET per inviare una e-mail HTML (in questo caso, un promemoria perso della password).Avviso "riga stampabile più lungo di 76 caratteri" durante l'invio di e-mail HTML

Quando eseguo il test dell'e-mail, questo viene mangiato dal mio filtro antispam. Una delle cose che è punteggio male su è a causa del seguente problema:

MIME_QP_LONG_LINE RAW: Quoted-printable line longer than 76 chars

che ho passato la fonte della e-mail, e hanno danneggiato ogni riga più lungo di 76 caratteri in due righe in mezzo un CR + LF, ma questo non ha risolto il problema.

Qualcuno può indicarmi la giusta direzione?

Grazie!

+0

[Quoted-printable] (http://en.wikipedia.org/wiki/Quoted_printable) è una codifica, non solo una lunghezza della linea. È necessario eseguire l'intero messaggio tramite un filtro di codifica per modificare le lunghezze delle righe e convertire alcuni caratteri in codici di escape. –

+0

Come si tenta di inviare l'e-mail? Se si crea un oggetto [MailMessage] (http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.aspx) (tramite 'System.Net.Mail'), ha persino il proprietà 'IsBodyHtml' e si occupa di tutta la formattazione e di tutto. – Biri

+0

@Biri Sì, sto utilizzando l'oggetto MailMessage e ho impostato IsBodyHtml su true. Quando autorizzo l'indirizzo di invio dal filtro antispam, il messaggio funziona (e viene visualizzato) correttamente. È solo che il filtro antispam mi segna per via di questo 'errore'. Altre idee? Sono desideroso di fare tutto il possibile per migliorare il punteggio di spam della mia posta elettronica in modo che abbia più possibilità di lavorare per gli utenti della mia applicazione. –

risposta

4

Quoted stampabile espande i caratteri da 8 bit a "= {HEX-Code}", rendendo così i messaggi più lunghi. Forse stai colpendo questo limite?

Hai provato a interrompere il messaggio, ad esempio, 70 caratteri? Questo dovrebbe fornire spazio per un paio di caratteri per riga.

Oppure basta codificare l'e-mail con Base64: tutto il client di posta può gestirlo.

Oppure basta impostare Content-Transfer-Encoding su 8 bit e inviare i dati non codificati. Al momento non conosco nessun server di posta in grado di gestire byte a 8 bit.

2

Questo è un bug nell'implementazione della codifica Quoted-Printable in System.Net.Mail.MailMessage, che è presente da molto tempo, ma è apparentemente ora risolto, a partire da .Net 4 Beta 2.

http://connect.microsoft.com/VisualStudio/feedback/details/156052/mailmessage-body-encoding-quoted-printable-violates-rfcs-soft-line-breaks-requirements

un work-around è quello di utilizzare la codifica Base64 invece (anche se non sarebbe altrimenti buona pratica di inviare una parte MIME testo semplice in una codifica leggibile non umano come questo). Chiedere all'utente di classificare manualmente le righe del messaggio prima di inviarlo non è una soluzione generale, poiché il messaggio modificato non è quello che desiderava inviare (ad esempio potrebbe includere un collegamento che è più lungo di 76 caratteri, quindi non può essere diviso). Quoted-Printable può gestire i messaggi con righe che superano 76 caratteri prima della codifica, a condizione che vengano implementati correttamente.

Problemi correlati