通过谷歌应用程序发送电子邮件在C#

问题描述:

我想用C#和我有麻烦这样做(4 System.Net.Mail /框架)通过谷歌应用程序/ Gmail发送一个基本的电子邮件。通过谷歌应用程序发送电子邮件在C#

我收到以下异常:“操作超时”。

我的代码如下:

  //Create the mail message 
      MailMessage mail = new MailMessage(); 

      //Set the addresses 
      mail.From = new MailAddress("[email protected]", "My Name"); 
      mail.To.Add(Email); 

      //Set the subject and bodycontent 
      mail.Subject = "Email Testing"; 
      mail.Body = "This is the body of the email"; 

      //Send the message using the SmtpClient 
      SmtpClient smtp = new SmtpClient(); 
      smtp.EnableSsl = true; 
      smtp.Send(mail); 

我的web.config具有以下设置:

 <smtp from="[email protected]" deliveryMethod="Network"> 
      <network host="smtp.gmail.com" 
       userName="[email protected]" 
       password="password" 
       port="587" /> 
     </smtp> 

在我的疑难解答我曾尝试:

  • 用我个人的Gmail地址以及来自通过Google Apps托管的域中的另一个域名。
  • 使用端口25,465,和587
  • 硬编码在C#代码的配置设置,而不是使用在web.config
  • 发送和telnet命令直接登录从多个网络位置,以确保在防火墙/ ISP不阻止它
  • 确保在GMail设置中启用了POP(根据谷歌,这应该打开使用SMTP发送的能力)
  • 更改发送和回复地址以确保它们与帐户匹配(显然是GMail必需)。

我可以通过GMail界面为我的两个电子邮件帐户发送和接收电子邮件。我也尝试了问题#757987中提供的设置和解决方案无济于事。

+0

有没有人有这与最近的GMail工作?我认为Google最近改变了一些安全设置,这导致了我的症状。 – NateReid 2010-04-09 03:19:10

您的代码看起来不错。你说你尝试过Telneting。你真的能够通过telnet发送邮件吗?

你可以尝试从您的SMTP标签移除

from="[email protected]" deliveryMethod="Network" 

因为它们没有必要为自己在做什么。

编辑:

的Telnet通常会允许您连接到SMTP服务器和发送数据的16个字节前,将你踢出去(?)。如果您没有收到类似these的回复,那很可能是这种情况。

在防火墙上尝试开放端口587,看看你能实际上通过telnet SMTP服务器(EHLO,ECHO等)进行交互。

+0

谢谢你的建议。我试图从smtp标签中删除“from”和“deliverymethod”,它仍然超时。 当我提到我试着在我最初的问题telnet命令......我尝试连接,它连接的,但是当我尝试使用我找到的指令发送电子邮件在“http://www.wikihow.com/Send-Email “使用Telnet”会在第一条命令后将我踢出去。 – NateReid 2010-03-31 15:08:26

+1

听起来像你的telnet实际上并没有连接,在这种情况下,你可能有网络问题。尝试在你的防火墙 – Joel 2010-03-31 15:32:07

+0

从谷歌上的故障排除电子邮件开放的587端口这就是我想,但根据该http://mail.google.com/support/bin/answer.py?hl=en&answer=78775页面(特别是最后一个项目符号点),我已连接。 – NateReid 2010-03-31 16:06:33