2012-08-07 84 views
2

這是我第一次寫一個發送郵件的程序。我不知道要在SMTP客戶端構造函數中放置什麼:用SmtpClient發送郵件

SmtpClient client = new SmtpClient(????); 

任何人都可以幫忙嗎?

+0

重複這個問題。解決方法1:這裏是http://stackoverflow.com/questions/4677258/send-email-using-system-net-mail-through-gmail – 2017-04-08 07:57:55

回答

11

始終諮詢文件。 SmptClient有三個構造函數。

SmtpClient() 
SmtpClient(String) 
SmtpClient(String, Int32) 

如果你選擇了最後一個,那麼你的代碼看起來像下面的Gmail:

SmtpClient client = new SmtpClient("smtp.gmail.com", 587); 

您也可以使用第一構造和設置屬性來代替。

SmtpClient smtp = new SmtpClient(); 
smtp.Port = 587; 
smtp.EnableSsl = true; 
smtp.Credentials = new NetworkCredential("<email_from>", "password"); 
smtp.Host = "smtp.gmail.com"; 
0
public SmtpClient(
    string host, 
    int port 
) 

基本上你需要傳遞主機名端口號

請閱讀更多關於SmtpClient Constructor

2

您可以指定SMTP主機和像其他人所建議的那樣使用代碼。

但如果你總是使用相同的主機和端口,它可能更容易和更靈活的使用默認SmtpClient構造,並指定the <smtp> element of your application configuration file主機和端口:這

using(var smtpClient = new SmtpClient()) 
{ 
    ... 
} 


<system.net> 
    <mailSettings> 
     <smtp deliveryMethod="network" from="[email protected]"> 
      <network 
       host="localhost" 
       port="25" 
       defaultCredentials="true" 
      /> 
     </smtp> 
    </mailSettings> 
<system.net> 

一個優點您可以在開發/測試環境中使用不同的配置,例如下面的配置,這樣可以避免在不更改任何代碼的情況下將不需要的郵件發送到系統的郵件收件人。

<smtp deliveryMethod="SpecifiedPickupDirectory" from="[email protected]"> 
    <network host="localhost"/> 
    <specifiedPickupDirectory pickupDirectoryLocation="C:\temp\mail\"/> 
</smtp> 
0

這是稍微偏離主題,但支持的最佳實踐方法與現代電子郵件傳送通過SMTP ...

我建議總是使用支持TLS通過SSL,因爲它提供了更多的服務安全傳輸。

如果你不熟悉TLS,@gideon提供爲Gmail TLS的一個例子,這裏是支持這種做法的文章:C# ASP.NET Send Email via TLS

相關問題