2010-04-15 228 views
3

試圖發送一些電子郵件在我的C#應用​​程序。我支持代理 - 這無疑爲什麼代碼不起作用。這是我到目前爲止有:通過代理使用Gmail發送電子郵件smtp

App.Config中

<system.net> 
    <defaultProxy enabled="false"> 
     <proxy proxyaddress="xxx.xxx.xxx.xxx"/> 
    </defaultProxy> 
    <mailSettings> 
     <smtp deliveryMethod="Network"> 
     <network host="smtp.gmail.com" port="587"/> 
     </smtp> 
    </mailSettings> 
    </system.net> 

代碼

 var username = "..."; 
     var password = "..."; 

     var fromEmail = "..."; 
     var toEmail = "..."; 
     var body = "Test email body"; 
     var subject = "Test Subject Email"; 

     var client = new SmtpClient("smtp.gmail.com", 587) 
     { 
      Credentials = new NetworkCredential(username, password), 
      EnableSsl = true 
     }; 

     try 
     { 
      client.Send(fromEmail, toEmail, subject, body); 
     } 
     catch (Exception e) 
     { 
      MessageBox.Show(e.Message); 
     } 

每次我得到System.Net.WebException:遠程名稱不能解決:'smtp.gmail.com'

在哪裏/如何開始調試?

+0

可能是你正在查看的答案可在https://stackoverflow.com/questions/19446001/send-smtp-mail-from-gmail-live-aol-or-yahoo-accounts-when-my-pc- is-connected-v/42719817#42719817 – dbw 2017-06-05 12:22:58

回答

3

你是正確的,在代理背後會阻止你的代碼工作。解決方案不是那麼簡單。沒有標準的「SMTP代理」,我知道(有HTTP代理的方式)。你將不得不使用SOCKS代理併爲它找到一些.NET客戶端--.NET框架中沒有一個,但是如果你是谷歌的「.NET SOCKS代理」,你應該能找到一個。

但是,您的網絡運行SOCKS代理的可能性不大,因此您可能不得不放棄這一點,只使用本地SMTP服務器。

+0

嗯....很爛! – baron 2010-04-15 05:27:18

8

要調試涉及客戶端服務器的任何事情,telnet是你的朋友。

嘗試下探至DOS和打字:

telnet smtp.gmail.com 587 

你應該看到:

220 mx.google.com ESMTP 20sm950596pzk.3 

如果不這樣做(你會得到一個 「無法連接」 或類似),你絕對被阻止。

如果您沒有安裝,您可以在'windows組件'下的添加/刪除程序中安裝telnet。

相關問題