Ho un server SMTP che accetta solo un mittente Da predefinito.
Tuttavia, è possibile aggiungere un'intestazione personalizzata nella struttura DATA per impostare un altro indirizzo (mittente). Questo è possibile se provo utilizzando Telnet per comporre un messaggio di posta elettronica:Come aggiungere intestazioni personalizzate alla classe SMTP System.Net.Mail?
>helo there
>mail from:[email protected]
>rcpt to:[email protected]
>data
From:[email protected]
To:[email protected]
Subject:Test
Test message
.
Quando questo messaggio è arrivato al destinatario, il dall'indirizzo è [email protected], che è l'obiettivo.
Ecco il mio problema.
Come posso simulare questo "dall'intestazione" nella classe SMTP System.Net.Mail? L'impostazione della proprietà from non riesce, poiché ciò violerebbe le politiche del server SMTP. Qualcosa di simile a questo sarebbe grande, ma non funziona:
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);
}
Qualcuno ha ottenuto tutte le idee?
PS. Scrivendo da solo una classe SMTP personalizzata, usando i socket TCP, funziona, ma può essere fatto nelle classi standard di .NET?
che non può funzionare "messaggio" è fuori portata, quando smtp.Send viene chiamato. la sintassi è completamente errata e la risposta non illustra la soluzione – GregJF
@GregJF, benvenuto in Stackoverflow. Se pensi che ci sia un modo per migliorare una risposta, puoi suggerire una modifica. –
Magnus, grazie per avermi dato il benvenuto su Stackoverflow: sono membro da più di 6 anni. Ho suggerito un modo per migliorare la tua risposta: correggi la tua sintassi !! La domanda riguarda le intestazioni, ma non le menzioni nella tua risposta. Per quanto riguarda la sintassi, prova a utilizzare un pad per controllare il codice prima di postare. per esempio. LINQPad – GregJF