2012-12-24 236 views
6

我想在用户点击提交联系我们页面时发送电子邮件,但由于某种原因,它不工作,我做错了什么? (PS电子邮件&密码从这个代码片断被遗漏的,但包含在实际的解决方案ASP.NET发送电子邮件

感谢

代码在web.config中:在asp.net接触形式

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

代码:

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

你是什么意思不工作? – Ravi

+1

将SendAsync()更改为Send()并查看异常。 – SLaks

+0

页面似乎正在加载相当长一段时间,但电子邮件从未收到。 另外我尝试设置Async =“true”仍然不能正常工作 – rikket

回答

3

Gmail使用端口465,而不是456 SSL SMTP。从here

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

使用身份验证:是的

端口为TLS/STARTTLS:587

端口对于SSL:465

+0

已更改但仍不能正常工作 – rikket

+0

Slaks提示您是否遇到异常?另外,你是否拥有'test @ gmail.com'或者你是否改变了这篇文章? (因为这是您的邮件发送的地方) – keyboardP

+0

[email protected]更改为电子邮件并且是,但不会引发异常 – rikket

1

“其他”可能的原因:

  • 您的代码在本地开发时是否“工作”,但在您将文件“发布”/ ftp/copy等文件到您的虚拟主机时停止工作?

  • 如果Yes:检查您的主机对ASP.Net trust设置。如果是medium trust(这可能是共享主机),那么请注意,您的不能使用任何端口其他比端口25对于SMTP中的中等信任

它可以在本地(开发),因为在本地开发/ VS环境,ASP.Net运行在full trust

REF(MSDN Blogs):SMTP Problems when ASP.Net is not running in full-trust

+0

仍然不能使用smtp端口25. – rikket

+0

System.Net.Mail.SmtpException:发送邮件失败。 ---> System.Net.WebException:无法连接到远程服务器---> System.Net.Sockets.SocketException:连接尝试失败,因为连接方在一段时间后没有正确响应或建立连接因为连接的主机没有响应 – rikket

+0

@rikket没有说你应该使用端口25 - 谷歌邮件不能在端口25上工作。我说*如果*(只有)如果'中等信任'设置,您*不能*使用除端口25以外的任何其他端口(因此不适用于Google Mail)。 – EdSF