Tengo un servidor SMTP que solo acepta un remitente predefinido.
Sin embargo, puedo agregar un encabezado personalizado desde la estructura DATA para configurar otro desde la dirección (remitente). Esto es posible si el test utilizando Telnet para redactar un mensaje de correo electrónico:Cómo agregar encabezados personalizados a la clase SMTP de System.Net.Mail?
>helo there
>mail from:[email protected]
>rcpt to:[email protected]
>data
From:[email protected]
To:[email protected]
Subject:Test
Test message
.
Cuando este mensaje ha llegado al destinatario, la dirección del remitente es [email protected], que es la meta.
Aquí está mi problema.
¿Cómo puedo imitar este "del encabezado" en la clase de SMTP de System.Net.Mail? La configuración de la propiedad from falla, porque eso violaría las políticas del servidor SMTP. Algo como esto sería grande, pero no funciona:
var fromAddress = new MailAddress("[email protected]");
var toAddress = new MailAddress("[email protected]");
string subject = "Subject";
string body = "Body";
var smtp = new SmtpClient
{
Host = "my-smtp-server",
Port = 25,
DeliveryMethod = SmtpDeliveryMethod.Network
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body,
ReplyTo = new MailAddress("[email protected]"),
})
{
message.Headers.Add("From", "[email protected]"); // <---- This would be great, if it worked
smtp.Send(message);
}
Alguien tiene alguna idea?
PS. Escribir una clase SMTP personalizada, utilizando sockets TCP, funciona, pero ¿se puede hacer esto en las clases .NET estándar?
Eso no puede funcionar "mensaje" está fuera de alcance cuando smtp.Send se llama. la sintaxis es completamente incorrecta y la respuesta no ilustra la solución – GregJF
@GregJF, bienvenido a Stackoverflow. Si cree que hay una forma de mejorar una respuesta, puede sugerirle una modificación. –
Magnus, gracias por darme la bienvenida a Stackoverflow: he sido miembro durante más de 6 años. Sugerí una forma de mejorar tu respuesta: ¡corrige tu sintaxis! La pregunta es sobre Encabezados, pero no los menciona en su respuesta. En sintaxis, intente utilizar un bloc de notas para verificar su código antes de publicarlo. p.ej. Linqpad – GregJF