我的问题是一样的,所以我实施了Koistya's solution如下。令人心碎的是,它在我的开发笔记本电脑上工作得非常漂亮,但是当移植到网络服务器时,它会超时而没有任何解释。
我的SMTP配置位于我的web.config
文件中。我根据Koistya的回答制作了mod:
<mailSettings>
**Changed**
<smtp from="my@email.com">
<network host="smtp.gmail.com" password="[password]" port="587"
userName="my@email.com"/>
</smtp>
**Original**
<!--<smtp from="my@email.com">
<network host="mail.domain.com" password="[password]" port="25"
userName="my@email.com"/>
</smtp>-->
</mailSettings>
我的.Net C#代码(删除之前和之后):
SmtpClient mSmtpClient = new SmtpClient();
mSmtpClient.EnableSsl = true;
mSmtpClient.Send(message);
正如我所说,这对我的开发环境很有用,但不适用于网络。有人可以帮忙吗?感谢。
答案 0 :(得分:2)
您的设置正确无误。我们使用gmail一直在我们的网络应用程序中发送邮件。您的服务器可能阻止端口587上的传出流量。我会联系您的主机,看看他们是否可以提供帮助,否则您将需要新邮件或新主机。
答案 1 :(得分:1)
感谢大家对本网站以及Google应用论坛的帮助(尽管我更喜欢这个)我最终将拼图的所有部分组合在一起。无论出于何种原因,端口465和端口587都不起作用。这对我有用:
的Web.config:
<smtp from="pwretrieve@mydomain.com">
<network host="smtp.gmail.com" password="[password]" port="25"
userName="pwretrieve@mydomain.com"/>
</smtp>
来自aspx.cs文件:
SmtpClient mSmtpClient = new SmtpClient();
mSmtpClient.EnableSsl = true;
再次感谢!
答案 2 :(得分:1)
我的表单遇到了同样的问题。我的网站在Plesk控制面板上运行。我所做的只是登录我的面板并禁用我的网络服务器上的电子邮件托管。之后,我的表单开始发送到Google应用帐户。试试我的所作所为,我相信你会有所作为。
答案 3 :(得分:0)
来自您的托管公司的响应失败,如果您有其他服务器可以发送测试请求,请尝试请求连接到其他端口,看看会发生什么。
答案 4 :(得分:-1)
可能是smtp客户端无法访问smtp服务器(可能被Web主机禁用)。
询问网络主机是否有特定的smtp服务器,您应该用它来发送电子邮件。
答案 5 :(得分:-1)
如果您的虚拟主机不允许您从其服务器发送外发SMTP邮件,则会导致此问题。例如,GoDaddy只允许您从服务器通过smtpout.secureserver.net发送外发邮件,因此任何通过其他主机(在本例中为smtp.gmail.com)发送邮件的尝试都将失败。如果您的ISP没有阻止外发SMTP(例如Qwest没有),那么这就是本地工作的原因。
使用您的虚拟主机查看常见问题解答,了解他们对此有何看法。大多数托管公司都允许传出SMTP,但将其限制为每天一定数量的中继,以防止意外利用垃圾邮件转发。
您的域中的MX记录仅影响传入邮件,这是正确的。当有人试图将邮件发送到you@yourdomain.com时,他们会将邮件发送到SMTP服务器(很可能是他们的ISP提供给他们的服务器),然后SMTP服务器会查找您的MX记录以查看谁处理您的电子邮件。它将解析为smtp.gmail.com,这样谁将收到你的邮件,你从中得到它。当您发送外发邮件时,它可以通过任何人,因为您只关心目标域的MX记录(邮件最终会以最终结束)。
这有意义吗?如果您想要一些澄清,我可以找到一些教程和其他解释来帮助理解它。