2008-09-12 4 views
6

He escrito un código en mi aplicación VB.NET para enviar un correo electrónico HTML (en este caso, un recordatorio de contraseña perdida).Advertencia de "línea imprimible entre comillas de más de 76 caracteres" al enviar correo electrónico HTML

Cuando pruebo el correo electrónico, es comido por mi filtro de correo no deseado. Una de las cosas que está marcando negativamente en es debido al siguiente problema:

MIME_QP_LONG_LINE RAW: Quoted-printable line longer than 76 chars

He estado a través de la fuente de la dirección de correo, y yo he roto cada línea de más de 76 caracteres en dos líneas con un CR + LF en el medio, pero eso no ha solucionado el problema.

¿Alguien puede indicarme la dirección correcta?

Gracias!

+0

[Quoted-printable] (http://en.wikipedia.org/wiki/Quoted_printable) es una codificación, no solo una longitud de línea. Debe ejecutar todo el mensaje a través de un filtro de codificación para modificar las longitudes de línea y convertir algunos caracteres para escapar de los códigos. –

+0

¿Cómo intentas enviar el correo electrónico? Si crea un objeto [MailMessage] (http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.aspx) (a través de 'System.Net.Mail'), incluso tiene el propiedad 'IsBodyHtml' y se encarga de todo el formato y todo. – Biri

+0

@Biri Sí, estoy usando el objeto MailMessage, y establecí IsBodyHtml en verdadero. Cuando hago una lista blanca de la dirección de envío del filtro de correo no deseado, el mensaje funciona (y se muestra) correctamente. Es solo que el filtro de spam me está marcando debido a este 'error'. ¿Alguna otra idea? Estoy dispuesto a hacer todo lo posible para mejorar el puntaje de correo no deseado de mi correo electrónico para que tenga más posibilidades de funcionar para los usuarios de mi aplicación. –

Respuesta

4

La impresión entre comillas expande los caracteres de 8 bits a "= {HEX-Code}", lo que hace que los mensajes sean más largos. ¿Quizás estás llegando a este límite?

¿Ha intentado dividir el mensaje en, digamos, 70 caracteres? Eso debería proporcionar espacio para un par de caracteres por línea.

O simplemente codifica el correo electrónico con Base64 - todo el cliente de correo puede manejar eso.

O simplemente configura Content-Transfer-Encoding en 8 bits y envía los datos sin codificar. No conozco ningún servidor de correo que no pueda manejar bytes de 8 bits estos días.

2

Esto es un error en la implementación de la codificación Quoted-Printable en System.Net.Mail.MailMessage, que ha estado allí durante mucho tiempo, pero aparentemente ahora está arreglado, a partir de .Net 4 Beta 2.

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

una solución alternativa es utilizar la codificación Base64 lugar (aunque no de otro modo sería una buena práctica para enviar una parte MIME texto sin formato en una codificación legible no humano como este). Pedir al usuario de la clase que divida manualmente las líneas del mensaje antes de enviarlo no es una solución general, ya que el mensaje modificado no es lo que desea enviar (por ejemplo, puede incluir un enlace que tenga más de 76 caracteres, y así no se puede dividir). Quoted-Printable puede manejar mensajes con líneas que tienen más de 76 caracteres antes de la codificación, siempre que se implemente correctamente.

Cuestiones relacionadas