Reduzca los golpes X-Spam en el correo enviado a través de SMTPClient ()
-
28-10-2019 - |
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);
}
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