ASP.NET发送电子邮件

6

我正在尝试在用户单击联系我们页面中的提交按钮时发送电子邮件,但由于某种原因它无法正常工作,我做错了什么?(PS:此代码片段中省略了电子邮件和密码,但在实际解决方案中包含。)

谢谢

在web.config中的代码:

<system.net>
<mailSettings>
  <smtp from="order@test.com">
    <network host="smtp.gmail.com"
             userName="" //my email
             password="" //password deleted for privacy reasons
             defaultCredentials="false"
             port="456"
             enableSsl="true" />
  </smtp>
</mailSettings>

ASP.NET联系表单的代码:

protected void btnSubmit_Click(object sender, EventArgs e)
    {
        MailMessage mail = new MailMessage();
        mail.To.Add(new MailAddress("test@gmail.com"));
        mail.Subject = "Test";
        mail.Body = "Message was sent from" + txtName.text + txtComment.text;
        SmtpClient smtp = new SmtpClient();
        smtp.SendAsync(mail, null);
    }

你说的“不工作”是什么意思? - Ravi
1
SendAsync() 更改为 Send() 并查看异常。 - SLaks
页面似乎加载了很长时间,但是电子邮件并没有收到。我也尝试设置 Async="true" ,但仍然无法正常工作。 - rikket
2个回答

3

Gmail使用端口465而不是456进行SSL SMTP。参考这里:

发件服务器(SMTP)-需要TLS1或SSL:smtp.gmail.com

使用身份验证:是

TLS / STARTTLS端口:587

SSL端口:465


你是否像Slaks建议的那样捕获了异常?另外,你是否拥有test@gmail.com或者为了这篇文章而更改了它?(因为你的邮件是发送到那里的) - keyboardP
test@gmail.com被更改为email,但没有抛出任何异常。 - rikket
System.Net.Mail.SmtpException: 发送邮件失败。---> System.Net.WebException: 无法连接到远程服务器 ---> System.Net.Sockets.SocketException: 连接尝试失败,因为连接方在一段时间后没有正确响应,或者已建立的连接失败,因为连接的主机没有响应。 - rikket
检查一下你的防火墙是否阻止了该端口。 - keyboardP
关闭了防火墙,仍然存在相同的问题。 - rikket
不确定问题出在哪里。假设您已经正确将“order@test.com”替换为正确的Gmail地址(因为您想要访问Gmail的SMTP,而“test.com”域名是错误的),并且您的Web.config文件已被正确加载,那么似乎错误出现在其他地方(代码/环境问题)。 - keyboardP

1

可能的另一个原因:

  • 在本地开发时,您的代码是否“正常”工作,但是当您将文件“发布”/ftp/复制等到您的网络主机时停止工作?

  • 如果:检查您的主机的ASP.Net的信任设置。如果它是中等信任(在共享主机中很可能),则请注意,在中等信任中,您不能使用除端口25之外的任何端口进行SMTP。

它在本地(dev)上运行,因为在本地dev / VS环境中,ASP.Net以完全信任运行。

REF(MSDN博客):ASP.Net未以完全信任运行时的SMTP问题


System.Net.Mail.SmtpException: 发送邮件失败。---> System.Net.WebException: 无法连接到远程服务器 ---> System.Net.Sockets.SocketException: 连接尝试失败,因为连接方在一段时间后没有正确响应,或者已建立的连接失败,因为连接的主机没有响应。 - rikket
@rikket并没有说您应该使用25号端口 - Google Mail不在25号端口上工作。我是说,如果(仅限于)设置了“中等信任”,则您不能使用除25号端口以外的任何其他端口(因此无法与Google Mail一起使用)。 - EdSF

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接