2008-09-12 4 views
6

J'ai écrit du code dans mon application VB.NET pour envoyer un e-mail HTML (dans ce cas, un rappel de mot de passe perdu)."Ligne imprimable citée plus long que 76 caractères" Avertissement lors de l'envoi HTML E-Mail

Lorsque je teste l'e-mail, il est mangé par mon filtre anti-spams. L'une des choses qu'il est mal de notation sur est à cause du problème suivant:

MIME_QP_LONG_LINE RAW: Quoted-printable line longer than 76 chars

Je suis à travers la source de l'e-mail, et je me suis cassé chaque ligne plus de 76 caractères en deux lignes avec un CR + LF entre les deux, mais cela n'a pas réglé le problème.

Quelqu'un peut-il me diriger dans la bonne direction?

Merci!

+0

[Quoted-printable] (http://en.wikipedia.org/wiki/Quoted_printable) est un encodage, pas seulement une longueur de ligne. Vous devez exécuter le message entier via un filtre de codage pour modifier les longueurs de ligne et convertir certains caractères en codes d'échappement. –

+0

Comment essayez-vous d'envoyer l'e-mail? Si vous créez un objet [MailMessage] (http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.aspx) (via 'System.Net.Mail'), il a même propriété 'IsBodyHtml' et il prend soin de tout le formatage et tout. – Biri

+0

@Biri Oui - J'utilise l'objet MailMessage, et j'ai défini IsBodyHtml à true. Lorsque je liste en liste blanche l'adresse d'envoi du filtre anti-spams, le message fonctionne (et s'affiche) correctement. C'est juste que le filtre anti-spam me marque à cause de cette 'erreur'. D'autres idées? Je tiens à faire tout ce que je peux pour améliorer le score de spam de mon e-mail afin qu'il ait plus de chance de travailler pour les utilisateurs de mon application. –

Répondre

4

L'impression encadrée étend les caractères de 8 bits à "= {Code HEX}", ce qui augmente la longueur des messages. Peut-être que vous venez de frapper cette limite?

Avez-vous essayé d'interrompre le message à, disons, 70 caractères? Cela devrait fournir de l'espace pour quelques caractères par ligne.

Ou vous venez d'encoder l'email avec Base64 - tous les clients de messagerie peuvent gérer cela.

Ou vous avez simplement défini Content-Transfer-Encoding sur 8bit et envoyé les données non codées. Je connais aucun serveur de messagerie incapable de gérer les octets 8 bits ces jours-ci.

2

Ceci est un bogue dans l'implémentation de l'encodage Quoted-Printable dans System.Net.Mail.MailMessage, qui existe depuis longtemps, mais est apparemment maintenant corrigé, à 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

une autre solution consiste à utiliser l'encodage base64 à la place (même si ce ne serait pas autrement bonne pratique d'envoyer une partie MIME texte brut dans un codage lisible non humain comme celui-ci). Demander à l'utilisateur de la classe de diviser manuellement les lignes du message avant de l'envoyer n'est pas une solution générale, car le message modifié n'est pas ce qu'il voulait envoyer (par exemple, il peut inclure un lien de plus de 76 caractères, etc. ne peut pas être divisé). Quoted-Printable peut gérer les messages avec des lignes de longueur supérieure à 76 caractères avant le codage, tant qu'il est implémenté correctement.

Questions connexes