2010-04-15 185 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。

相关问题