Question

j'utilise System.Net.Mail.SmtpClient Pour envoyer des e-mails via un serveur SMTP distant. Quand je regarde les en-têtes du message envoyé, je vois que le message obtient 2,5 coups sûrs de X-Spam. Comment puis-je empêcher le codage de base64 du From champ, et comment se débarrasser du NULL_IN_BODY succès? Même s'il n'est pas marqué comme du spam, je veux que ce soit parfait. Je ne suis pas en mesure de trouver des informations concernant ce problème (si c'est vraiment un problème).

MIME-Version: 1.0
From: Myself <no-reply@myself.com>
To: me@myself.com
Date: 25 Mar 2011 15:20:23 +0100
Subject: Test subject
Content-Type: text/plain; charset=us-ascii
X-Spam-Status: No, hits=0.5 required=5.0
X-Spam-Report: 0.5 hits, 5.0 required;
    * -0.5 ALL_TRUSTED            Passed through trusted hosts only via SMTP
    *  1.0 NULL_IN_BODY           FULL: Message has NUL (ASCII 0) byte in message
X-Virus-Scanned: by moam (http://www.moam.net/)
X-Moam-Version: 0.95
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from quoted-printable to 8bit by mx02.example.com id p2PEKKNs014451

Hello, sshow!
Below is your login information

Username: sshow
Password: a8sJdfl

Sent from http://me.myself.com

Éditer: J'ai réussi à supprimer l'avertissement pour FROM_EXCESS_BASE64, qui était le plus important, en supprimant tout encodage pour le domaine. J'avais déjà réglé manuellement Encoding.UTF8 pour le champ.

En supprimant tous les caractères de contrôle de body String, cela n'augmente plus l'avertissement. Cependant, cela supprime également les brise-ligne.

foreach (char c in body)
{
    stringBuilder.Append(Char.IsControl(c) ? ' ' : c);
}

Éditer: Lors de la suppression de toutes les bavardages à l'exception des brise-ligne, l'avertissement revient!

foreach (char c in body)
{
    stringBuilder.Append(Char.IsControl(c) && c != '\r' && c != '\n' ? ' ' : c);
}
Était-ce utile?

La solution

Sans voir le corps de l'e-mail ou le code source, il n'est pas possible de le dire avec certitude, mais je suppose que ce qui suit est vrai:

  • Vous avez la base64 encodé de l'en-tête de de la part, même s'il n'était pas nécessaire de le faire. Spamassassin considère que c'est une tentative probable d'obscurcir quelque chose: http://wiki.apache.org/spamassassin/rules/from_excess_base64
  • Vous avez des données binaires (en particulier un octet nul) dans le corps de votre e-mail. Cela peut se produire par exemple si vous videz le texte codé UTF-16 (UTF-32) dans le corps de l'e-mail, car les caractères anglais ordinaires seraient représentés comme deux (quatre) octets chacun, dont un (trois) nul.

Si cela ne résout pas le problème, veuillez publier votre code complet et un vidage hexagonal de l'ensemble du message.

METTRE À JOUR:

Char.isControl supprime également les caractères CR et LF (' r' et ' n'). Changez votre code pour ne pas les supprimer, par exemple:

Char.IsControl(c) && c != '\r' && c != '\n' ? ' ' : c
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top