c# - recibir - El correo electrónico HTML generado de forma automática se clasifica como correo no deseado por Outlook
como marcar un correo como spam en outlook (5)
Esta pregunta ya tiene una respuesta aquí:
Tengo una aplicación C # en funcionamiento que necesita enviar un correo html a través de smtp. El correo electrónico se envía correctamente, pero la configuración de seguridad predeterminada en Outlook (baja) lo clasifica como correo no deseado.
No es exactamente un problema sensacional, pero esto es bastante molesto, especialmente porque la carpeta de basura desactiva html. No quiero tener que hacer que todos en mi empresa hagan algo especial para recibir estos correos electrónicos de forma legible, ¿alguien sabe lo que podría estar haciendo que hace que las perspectivas piensen que se trata de correo no deseado?
Código que hace que el correo electrónico (cosas básicas). Config sea un objeto que contenga cadenas relacionadas con la configuración de este material, toList es una lista de direcciones de correo electrónico, cuerpo / asunto que se completan con otras llamadas a funciones.
Editar: Para agregar, en este momento solo estoy enviándome a mí mismo. En la versión en vivo, estaremos mirando a menos de cien personas a las que se enviará en el peor de los casos.
Otro Editar: Resultó estar sucediendo mucho más a menudo por los correos electrónicos más largos que estaba generando el otro día (~ 200-300 líneas en el peor de los casos), y no por los correos electrónicos más cortos que estoy generando ahora. Ese es un criterio de filtro lo suficientemente razonable, supongo.
SmtpClient smtp = new SmtpClient(config.SmtpServer);
NetworkCredential net = new NetworkCredential();
net.UserName = config.SmtpLogin;
net.Password = config.SmtpPass;
smtp.Credentials = net;
MailMessage msg = new MailMessage();
msg.IsBodyHtml = true;
msg.Priority = MailPriority.Normal;
msg.To.Add(String.Join(",", toList.ToArray()));
msg.From = new MailAddress(fromAddr, "Build Server");
msg.Body = "Blah html is here";
msg.Subject = "Build successful: #numberhere and stuff";
try
{
smtp.Send(msg);
}
catch (SmtpException)
{
//stuff
}
Creo que esto es menos un problema de programación y más un problema de configuración. Los destinatarios deben agregar fromAddr
a su "lista de remitentes seguros".
El caso es que, si hubiera una forma de configurar un correo electrónico para eludir el filtro de correo basura, todos los spammers lo harán.
Si se trata de crear el correo electrónico perfecto que no sea basura, puede funcionar a veces y no a otros. Y todos los spammers lo harán.
Tendrá que decirles a todos que permitan correos electrónicos desde esa cuenta. Y probablemente no deberías comenzar ese correo electrónico con referencias anatómicas o medicinales innecesarias.
Si está enviando varios correos a la vez, envíelos en lotes pequeños para que no inunde el servidor. Compruebe el texto del correo electrónico en busca de palabras y símbolos que puedan ser considerados como spam por algunos filtros. Es posible que también desee analizar cosas como SPF para reducir la posibilidad de que sus correos electrónicos se marquen como correo no deseado.
Si su mensaje A contiene una lista grande, puede verse como correo no deseado. Intente enviar un correo electrónico único a cada persona en lugar de un correo electrónico masivo.
Sin embargo:
Si va a recorrer su lista y enviar un correo electrónico para cada usuario, es posible que desee considerar la creación de una cola que se procesará que permita la falla y vuelva a intentarlo.
Tuvimos un problema similar en nuestro sistema en el que después de aproximadamente 20,00 mensajes enviados en sucesión rápida (es decir, dentro de un bucle foreach) el servidor de correo saliente rechazó cualquier intento adicional de retransmisión.
En su lugar, agregamos mensajes salientes a una tabla de base de datos, y escribimos un servicio que procesaría una cantidad específica de correos electrónicos a la vez y luego pausar durante un tiempo específico antes de volver a hacerlo.
Además, esto nos permitió capturar fallas y luego configurar reglas de reintento. Después de intentar X, marcamos el mensaje como fallido e informamos el problema. Descubrimos que esto proporcionaba un sistema mucho más confiable de usuarios para obtener sus mensajes, además de que ya no estaban marcados como spam.
Solo un pensamiento, intente recorrer su lista y enviar un correo electrónico por separado. Además, intente experimentar con diferentes redacciones y estructuras html.
Agregue la siguiente línea en su código al crear MailMessage
msg.BodyEncoding = System.Text.Encoding.GetEncoding("utf-8");