2013-07-18 52 views
0

我需要在我們的應用程序中實施「電子郵件支持」部分。因此,電子郵件地址將爲[email protected],地址爲最終用戶的電子郵件地址(最終用戶的電子郵件地址可能位於相同的域或其他域,如[email protected]或用戶@ gmail.com)。電子郵件支持部分的用戶地址爲「發件人地址」

在我使用驗證管理員帳戶的詳細信息(用戶名和密碼)

System.Net.NetworkCredential("[email protected]", adminpassword); 

而且我使用的主機地址的電子郵件應用程序「mail.mydomain.com」 問題是我正在以下錯誤:

「Mailbox unavailable. The server response was: From address must match authenticated address」 error message.

是否有可能用正確的發件人的電子郵件地址發送電子郵件(從地址的用戶)

我的代碼示例是

message.To.Add(「[email protected]」); 
message.From = new MailAddress(「[email protected]」); 
message.IsBodyHtml = true; 
message.BodyEncoding = Encoding.UTF8; 
var smtp = new SmtpClient("mail.mydomain.com"); 
smtp.Credentials = new System.Net.NetworkCredential([email protected], adminpassword); 
smtp.EnableSsl = false; 
object usrtkn = message; 
smtp.Send(message); 

回答

0

你不能這樣做,你在做什麼,因爲SMTP服務器是不是允許你發送到系統「模擬」用戶的電子郵件地址。並且謝天謝地,情況就是如此,否則人們會以別人的名義發送/欺騙所有人。

你爲什麼試圖讓它顯示用戶正在嚮應用程序發送電子郵件?爲什麼不只是有一個應用程序的支持部分,用戶可以「提交」支持系統的請求,然後如果你想發送電子郵件給用戶,那麼你的方案將工作,但只是在相反(系統是地址爲From,用戶爲To地址)。

1

一般而言,From地址不應該是用戶本身,它應該是一個內部系統地址。這主要是因爲用戶實際上並沒有發送電子郵件,應用程序是。在電子郵件本身中,您可以指定哪個用戶發送了它(以及他們的電子郵件地址是什麼)。您甚至可以在郵件的the ReplyTo field中指定用戶的電子郵件地址。

但你從SMTP服務器收到的消息幾乎說明了一切。如果該消息是來自該用戶的「來自」,則SMTP服務器拒絕該消息,因爲它對於電子郵件的認證和發起非常敏感。到SMTP服務器(我想象到任何SMTP服務器),它看起來像你試圖欺騙郵件。

+0

很高興看到你對這個場景中'user'和'system'應該扮演的角色有相同的解釋。 :-) –

+1

@KarlAnderson:同意。我經常看到有人試圖從審計線索中刪除軟件,並使其看起來像用戶直接做所有事情,但事實並非如此。 (http://publicvoidlife.blogspot.com/2012/05/case-for-service-accounts.html)應用程序本身就是後端服務的用戶,應該這樣對待。 – David

相關問題