在C#代碼中,有沒有辦法發送電子郵件,而不必知道服務器上的SMTP服務器配置等,或者設置了任何東西?C#代碼發送電子郵件時不知道有關服務器配置?
我正在開發的代碼將部署到活動服務器,但我對配置一無所知,所以我無法預測SMTP服務器將會是什麼。
在C#代碼中,有沒有辦法發送電子郵件,而不必知道服務器上的SMTP服務器配置等,或者設置了任何東西?C#代碼發送電子郵件時不知道有關服務器配置?
我正在開發的代碼將部署到活動服務器,但我對配置一無所知,所以我無法預測SMTP服務器將會是什麼。
最好的答案是,如果你直到現場一無所知,你能否將所有設置移到web.config中?這將允許配置直到最後一刻。下面是一些代碼轉儲到你的web.config文件。我會問,爲什麼你沒有訪問這些信息雖然
<system.net>
<mailSettings>
<smtp from="[email protected]">
<network host="SMTP SERVER ADDRESS" port="25"
userName="USERNAME" password="PASSWORD">
</smtp>
</mailSettings>
</system.net>
如果您的SMTP配置是正確的,只是這樣做:
MailMessage mail = new MailMessage();
mail.To = "To";
mail.From = "From";
mail.Subject = "Subject";
mail.Body = "Body";
SmtpMail.SmtpServer = "localhost";
SmtpMail.Send(mail);
添加到您的web.config(MSDN reference here ):
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="[email protected]">
<network host="localhost" port="25" />
</smtp>
</mailSettings>
</system.net>
使用SmtpClient而不指定配置設置將使用的值從web.config:
MailMessage msg = new MailMessage(...);
// build message contents
SmtpClient client = new SmtpClient();
client.Send(msg);
那個很棒。謝謝。 – Tarik 2009-07-10 00:24:07
作爲替代方案:如果你不想依賴於服務器的配置和做編程你總是可以做到這一點:
MailMessage mail = new MailMessage() {
To = "[email protected]somewhere",
From = "[email protected]",
Subject = "My Subject",
Body = "My message"
};
SmtpClient client = new SmtpClient("SMTP Server Address");
// Naturally you change the "SMTP Server Address" to the
// actual SMTP server address
client.Send(mail);
但我建議你堅持在web.config文件(其中也可以通過ASP.NET Web配置工具進行配置)。
這不起作用。 我得到一個.NET異常: 「發送郵件失敗。」 內部異常說:「{」遠程名稱無法解析:'SMTP服務器地址'「}」 – Jonathan 2009-01-20 22:01:20
試試這個呀,你可以使用工具,如SMTP4Dev到「發送」郵件,而無需SMTP服務器在所有。我經常使用它進行測試,以確保我實際上不是真的將電子郵件發送給真正的用戶。
要爲「搞定」的屬性,你不能對它進行設置這樣的。 – Tarik 2009-07-20 00:13:33