Mam serwer SMTP, który akceptuje tylko predefiniowany Od nadawcy.
Jednak mogę dodać niestandardowy z nagłówka w strukturze DATA, aby ustawić inny adres (nadawcy). Jest to możliwe, jeśli przetestować za pomocą usługi Telnet, aby utworzyć wiadomość e-mail:Jak dodać niestandardowe nagłówki do klasy 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
.
Kiedy ta wiadomość doszła do biorcy, od adresu jest [email protected], który jest celem.
Oto mój problem.
Jak mogę naśladować ten "z nagłówka" w klasie System.Net.Mail SMTP? Ustawienie właściwości z nie powiodło się, ponieważ naruszałoby to zasady serwera SMTP. Coś takiego byłoby świetnie, ale to nie działa:
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);
}
Czy ktoś ma jakieś pomysły?
PS. Pisząc niestandardową klasę SMTP samodzielnie, używając gniazd TCP, działa, ale czy można to zrobić w standardowych klasach .NET?
To nie może ewentualnie działać „wiadomość” jest poza zakresem gdy smtp.Send nazywa. składnia jest całkowicie błędna, a odpowiedź nie ilustruje rozwiązania – GregJF
@GregJF, witamy w Stackoverflow. Jeśli uważasz, że istnieje sposób na ulepszenie odpowiedzi, możesz zasugerować jej zmianę. –
Magnus, dzięki za powitanie mnie w Stackoverflow: Byłem członkiem od ponad 6 lat. Zaproponowałem sposób, aby poprawić swoją odpowiedź: popraw swoją składnię! Pytanie dotyczy nagłówków, ale nie wspominasz o nich w swojej odpowiedzi. Jeśli chodzi o składnię, spróbuj użyć notatnika do sprawdzania kodu przed wysłaniem. na przykład Linqpad – GregJF