5
我有一個SMTP服務器,只接受預定義發件人。
但是,我可以在數據結構中添加一個自定義標頭來設置另一個來自(發件人)地址。這是可能的,如果我測試使用Telnet編寫電子郵件:如何將自定義標題添加到System.Net.Mail SMTP類?
>helo there
>mail from:[email protected]
>rcpt to:[email protected]
>data
From:[email protected]
To:[email protected]
Subject:Test
Test message
.
當這封郵件已到達收件人,發件人地址[email protected],這是我們的目標。
這是我的問題。
如何在System.Net.Mail SMTP類中模擬這種「from header」? 設置from屬性失敗,因爲這會違反SMTP服務器策略。 這樣的事情將是巨大的,但它不工作:
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);
}
有沒有人有什麼想法?
PS。自己寫一個自定義的SMTP類,使用TCP套接字,它可以工作,但是這可以在標準的.NET類中完成嗎?
那不可能的工作「消息」超出範圍時smtp.Send被調用。語法是完全錯誤的,答案沒有說明解決方案 – GregJF 2017-11-03 01:02:36
@GregJF,歡迎來到Stackoverflow。如果您認爲有辦法改進答案,您可以建議對其進行編輯。 – 2017-11-03 08:04:38
馬格納斯,感謝我歡迎我到Stackoverflow:我已經是會員6年多了。我確實建議了一種方法來改善你的答案:改正你的語法!問題是關於標題,但你沒有在你的答案中提到它們。在語法上,嘗試在發佈前使用便箋本檢查代碼。例如Linqpad – GregJF 2017-11-05 20:55:55