尝试在我的C#应用中发送一些电子邮件。我支持代理 - 这无疑是代码无效的原因。这就是我到目前为止所做的:
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 :(得分:8)
要调试涉及客户端服务器的任何内容,telnet就是你的朋友。
尝试删除DOS并输入:
telnet smtp.gmail.com 587
您应该看到:
220 mx.google.com ESMTP 20sm950596pzk.3
如果你没有(你得到一个“无法连接”或其他一些),你肯定会被阻止。
如果您没有安装telnet,可以在'windows components'下的添加/删除程序中安装telnet。
答案 1 :(得分:3)
你是正确的,在代理后面会阻止你的代码工作。解决方案并非如此简单。没有我所知道的标准“SMTP代理”(有HTTP代理的方式)。你必须使用SOCKS代理并为它找到一些.NET客户端 - 在.NET框架中没有一个,但如果你谷歌“.NET SOCKS代理”,你应该能找到一个。
但是,您的网络运行SOCKS代理的可能性相当小,所以您可能不得不放弃这一点,只需使用本地SMTP服务器。