使用 gmail smtp 通过代理发送电子邮件
Posted
技术标签:
【中文标题】使用 gmail smtp 通过代理发送电子邮件【英文标题】:Sending email through proxy using gmail smtp 【发布时间】:2011-02-08 05:32:47 【问题描述】:尝试在我的 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'
从哪里/如何开始调试?
【问题讨论】:
可能是您正在寻找的答案,请访问***.com/questions/19446001/… 【参考方案1】:要调试任何涉及客户端服务器的东西,telnet 是您的朋友。
尝试进入 DOS 并输入:
telnet smtp.gmail.com 587
你应该看到:
220 mx.google.com ESMTP 20sm950596pzk.3
如果你不这样做(你得到一个“无法连接”或类似的东西),你肯定被阻止了。
如果您没有安装 telnet,您可以从“Windows 组件”下的添加/删除程序中安装它。
【讨论】:
【参考方案2】:您是正确的,在代理后面会阻止您的代码工作。解决方案并不是那么简单。我知道没有标准的“SMTP 代理”(HTTP 代理的方式)。您必须使用 SOCKS 代理并为其找到一些 .NET 客户端 - .NET 框架中没有,但如果您在 Google 上搜索“.NET SOCKS 代理”,您应该能够找到。
不过,您的网络不太可能运行 SOCKS 代理,因此您可能不得不放弃这一点,而只使用本地 SMTP 服务器。
【讨论】:
以上是关于使用 gmail smtp 通过代理发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
无法通过 gmail 从新创建的电子邮件中使用 phpMailer 发送 SMTP 邮件 [重复]
通过 GoDaddy 上的 gmail SMTP 发送电子邮件 [关闭]