2008-09-11 51 views
7

我正在開發一個Windows窗體(.NET 3.5)應用程序,該應用程序具有內置的異常處理程序來捕獲可能引發的任何(天堂禁止)異常。我希望異常處理程序能夠提示用戶單擊「發送錯誤報告」按鈕,這會導致應用程序向我的FogBugz電子郵件地址發送電子郵件。從.NET應用程序發送電子郵件的最佳方法?

這樣做的最佳方式是什麼?有沒有什麼「小竅門」要留意?

回答

3

你會想要使用SmtpClient類的概述here
有沒有陷阱 - 發送電子郵件就像它變得簡單一樣。

+3

如果您需要使用smtp將郵件發送給1000位用戶,它的可擴展性如何?你是否必須編寫額外的代碼來減慢速度,這樣smtp服務器纔會被淹沒? – Haoest 2008-09-16 03:48:43

1

您可能還需要檢查出第三方aspNetEmail庫,裏面有很多有用的功能,以提供上面什麼System.Net.Mail給你。

2

在受控環境下,使用SmtpClient的將是答案。但是在用戶的機器上,你需要一個SMTP服務器來發送。

您可能會促使他們的SMTP憑證的用戶,但我認爲這將是不切實際的,你的情況。作爲用戶,我不想將我的SMTP憑據提供給隨機應用程序(認爲垃圾郵件)。您也不希望將自己的SMTP憑據硬編碼到應用程序中,惡意用戶可能會嗅探這些憑據並使用服務器發送垃圾郵件,這將是微不足道的。

理想情況下,您將能夠使用用戶的郵件代理髮送電子郵件。我在想你可能會制定並執行一個mailto:URL,但我不確定你是否能夠指定郵件的正文或附件。

+0

語法是mailto:[email protected]?subject = Hello&body = World!參數必須經過網址轉義 – rpetrich 2008-09-12 00:59:59

6

您不需要擔心客戶端憑據,只需使用Esteban建議的SmtpClient即可。您需要用戶在配置時提供有效的Smtp服務器url,但大多數ISP允許匿名smtp提供您的網絡(他們的客戶端之一) - 只要用戶放入其ISP的smptp服務器的url,那麼大多數人們不會有任何問題。

注意:.config文件的預定義部分用於存儲SmtpClient對象的配置選項。如果您將設置放在那裏,您在發送電子郵件時不必明確設置代碼中的任何內容。該部分的示例如下:

<system.net> 
    <mailSettings> 
     <smtp deliveryMethod="Network" from="[email protected]"> 
     <network host="smtp.somewhere.com.au" /> 
     </smtp> 
    </mailSettings> 
</system.net> 

用戶名和密碼是可選的。 Intellisense適用於配置文件的這些部分。

編輯:稍微更正我的代碼示例。

+0

嘿!你能否正確拼寫我的名字?謝謝,埃斯特班 – 2008-09-12 00:48:57

0

您需要使用SmtpClient類,如here所述。 沒有任何問題 - 發送電子郵件的過程非常簡單。

廣泛的System.Net.Mail FAQ位於here

相關問題