Pregunta

estoy usando System.Net.Mail.SmtpClient Para enviar correos electrónicos a través de un servidor SMTP remoto. Cuando estoy mirando los encabezados del mensaje enviado, veo que el mensaje recibe 2.5 hits de X-Spam. ¿Cómo puedo evitar la codificación de Base64 del From campo, y cómo deshacerse del NULL_IN_BODY ¿pegar? Aunque no está marcado como spam, quiero que sea perfecto. No puedo encontrar ninguna información sobre este problema (si realmente es un problema).

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

Editar: Logré eliminar la advertencia para FROM_EXCESS_BASE64, que fue el más importante, eliminando toda codificación para el campo. Anteriormente había establecido manualmente Encoding.UTF8 para el campo.

Eliminando todos los personajes de control de body cadena, ya no plantea la advertencia. Sin embargo, esto también elimina los rupturas de línea.

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

Editar: Al eliminar todos los controles de control, excepto los rupturas de línea, ¡la advertencia regresa!

foreach (char c in body)
{
    stringBuilder.Append(Char.IsControl(c) && c != '\r' && c != '\n' ? ' ' : c);
}
¿Fue útil?

Solución

Sin ver el cuerpo del correo electrónico o el código fuente, no es posible decirlo con certeza, pero supongo que lo siguiente es cierto:

  • Ha codificado Base64 el desde el encabezado, a pesar de que no era necesario hacerlo. Spamassassin considera que este es un intento probable de ofuscar algo: http://wiki.apache.org/spamassassin/rules/from_excess_base64
  • Tiene datos binarios (específicamente un byte nulo) en el cuerpo de su correo electrónico. Esto puede suceder, por ejemplo, si descarta el texto codificado UTF-16 (UTF-32) en el cuerpo del correo electrónico, ya que los caracteres ingleses ordinarios se representarían como dos (cuatro) bytes cada uno, uno (tres) de los cuales es nulo.

Si eso no resuelve el problema, publique su código completo y un volcado hexadecimal de todo el mensaje.

ACTUALIZAR:

Char.iscontrol elimina los caracteres CR y LF también (' r' y ' n'). Cambie su código para no eliminarlos, por ejemplo:

Char.IsControl(c) && c != '\r' && c != '\n' ? ' ' : c
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top