2008-09-12 9 views
6

Ich habe einen Code in meiner VB.NET-Anwendung geschrieben, um eine HTML-E-Mail (in diesem Fall eine Erinnerung für verlorenes Passwort) zu senden."Quoted-Printable Linie länger als 76 Zeichen" Warnung beim Senden von HTML-E-Mail

Wenn ich die E-Mail teste, wird sie von meinem Spam-Filter aufgefressen. Eines der Dinge, die sie schlecht auf Scoring sind ist aus folgendem Grunde Problem:

MIME_QP_LONG_LINE RAW: Quoted-printable line longer than 76 chars

Ich habe durch die Quelle der E-Mail, und ich habe jede Zeile mehr gebrochen als 76 Zeichen in zwei Zeilen mit einem CR + LF dazwischen, aber das hat das Problem nicht behoben.

Kann mir jemand in die richtige Richtung zeigen?

Danke!

+0

[Quoted-printable] (http://en.wikipedia.org/wiki/Quoted_printable) ist eine Kodierung, nicht nur eine Zeilenlänge. Sie müssen die gesamte Nachricht über einen Codierungsfilter ausführen, um Zeilenlängen zu ändern und einige Zeichen in Escape-Codes umzuwandeln. –

+0

Wie versuchst du die E-Mail zu senden? Wenn Sie ein [MailMessage] (http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.aspx) Objekt (über 'System.Net.Mail') erstellen, hat es sogar die Eigenschaft 'IsBodyHtml' und es kümmert sich um die gesamte Formatierung und alles. – Biri

+0

@Biri Ja - ich verwende das Objekt MailMessage, und ich habe IsBodyHtml auf True gesetzt. Wenn ich die Absenderadresse aus dem Spam-Filter in die Whitelist gebe, funktioniert die Nachricht korrekt (und wird angezeigt). Es ist nur so, dass der Spam-Filter mich wegen dieses "Fehlers" abweist. Irgendwelche anderen Ideen? Ich bin sehr daran interessiert, alles in meiner Macht Stehende zu tun, um die Spam-Bewertung meiner E-Mails zu verbessern, damit sie für die Nutzer meiner Anwendung besser funktionieren. –

Antwort

4

Druckfähiges Quoted erweitert 8-Bit-Zeichen zu "= {HEX-Code}", wodurch die Nachrichten länger werden. Vielleicht schaffst du es einfach?

Haben Sie versucht, die Nachricht um, sagen wir, 70 Zeichen zu brechen? Das sollte Platz für ein paar Zeichen pro Zeile bieten.

Oder Sie kodieren einfach die E-Mail mit Base64 - alle Mail-Client kann damit umgehen.

Oder Sie setzen einfach Content-Transfer-Encoding auf 8bit und senden die Daten uncodiert. Ich kenne keinen Mail-Server, der in der Lage ist, heutzutage 8-Bit-Bytes zu handhaben.

2

Dies ist ein Fehler in der Implementierung der Quoted-Printable-Codierung in System.Net.Mail.MailMessage, die seit langer Zeit dort ist, aber jetzt offenbar behoben ist, wie .Net 4 Beta 2.

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

ein Work-around ist Base64-Codierung zu verwenden, anstatt (auch wenn es nicht sonst gute Praxis wäre einen Klartext-MIME-Teil in einer nicht-menschlichen lesbaren Codierung wie diese zu senden). Den Benutzer der Klasse zu bitten, die Zeilen der Nachricht vor dem Senden manuell zu teilen, ist keine allgemeine Lösung, da die geänderte Nachricht nicht das ist, was sie senden wollte (z. B. könnte sie einen Link enthalten, der länger als 76 Zeichen ist, und so) kann nicht geteilt werden). Quoted-Printable kann Nachrichten mit Zeilen verarbeiten, die länger als 76 Zeichen sind vor Codierung, solange es korrekt implementiert ist.