通过代理使用Gmail发送电子邮件smtp
问题描述:
试图发送一些电子邮件在我的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'
在哪里/如何开始调试?
答
你是正确的,在代理背后会阻止你的代码工作。解决方案不是那么简单。没有标准的“SMTP代理”,我知道(有HTTP代理的方式)。你将不得不使用SOCKS代理并为它找到一些.NET客户端--.NET框架中没有一个,但是如果你是谷歌的“.NET SOCKS代理”,你应该能找到一个。
但是,您的网络运行SOCKS代理的可能性不大,因此您可能不得不放弃这一点,只使用本地SMTP服务器。
+0
嗯....很烂! – baron 2010-04-15 05:27:18
答
要调试涉及客户端服务器的任何事情,telnet是你的朋友。
尝试下探至DOS和打字:
telnet smtp.gmail.com 587
你应该看到:
220 mx.google.com ESMTP 20sm950596pzk.3
如果不这样做(你会得到一个 “无法连接” 或类似),你绝对被阻止。
如果您没有安装,您可以在'windows组件'下的添加/删除程序中安装telnet。
可能是你正在查看的答案可在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