2010-11-05 129 views
0

問題:可以在運行時配置多個SMTP服務器或更新SMTP對象服務器信息嗎?ASP.NET SMTP和Gmail

問題描述:我正在處理的網站有幾頁發送電子郵件。我們的網站使用Gmail,即使這是一個自定義域名,我們的電子郵件也會通過Gmail SMTP服務器發送出去。

某些電子郵件來自系統,某些電子郵件來自某些組的用戶。我有一個配置了系統管理員電子郵件的SMTP服務器,例如[email protected]這工作正常,當我得到它顯示從[email protected]電子郵件

我們的一個用戶組稱之爲「groupA」有一個電子郵件配置在我們的域名,即[email protected]當我發送電子郵件並將MailMessage對象的發件人地址指定爲[email protected]時,它仍顯示在我的Outlook中,來自[email protected]我做了一些進一步的測試,並且如果我指定了發件人地址和ReplyTo as [email protected]它會顯示爲[email protected],但是當我在Outlook中選擇回覆時,它會顯示[email protected]我最好的猜測是Gmail正在用SMTP用戶覆蓋發件人地址以防止電子郵件欺騙。

我發現這個:http://www.systemnetmail.com/faq/4.1.aspx但它不適用於我,因爲A組,B組和C組都需要從同一頁面發送電子郵件。

回答

1

據我所知,使用Gmail時不可能僞造「發件人」地址。 即使您使用應用程序premiere,並設置了地址別名,它仍然會顯示「代表發送」。在web.config中

system.net.mail配置只支持一個配置 您可以輕鬆地創建自己的自定義配置,並在運行時配置電子郵件服務器設置,像這樣:

SmtpClient smtp = new SmtpClient("smtp.gmail.com"); 
smtp.Port = 465; 
smtp.EnableSsl = true; 
smtp.UseDefaultCredentials = false; 
smtp.UserCredentials = new System.Net.NetworkCredential("yourusername", "yourpassword");  
smtp.Send(mail); 

可以很明顯的存儲yourusername和你的密碼在應用程序設置

+0

我不想「僞造」從地址。在我的示例中,[email protected]是我們爲其中一個網站用戶設置的域上的有效電子郵件地址。我希望能夠做的就是使用該地址發送來自站點的電子郵件,而不是配置的SMTP用戶帳戶地址。而在[email protected]的情況下,我希望它來自該地址。 – William 2010-11-05 18:42:06

+0

當您通過Gmail SMTP發送電子郵件時,您必須使用SMTP身份驗證。該用戶名與您登錄該SMTP的用戶名將位於電子郵件的「發件人」字段中。 – Artemiy 2010-11-05 20:17:59

+0

我意識到這一點。這就是爲什麼我的問題要求配置多個SMTP連接。 – William 2010-11-05 23:15:12