通过C#中的Google Apps发送电子邮件

时间:2010-03-31 13:31:04

标签: c# .net asp.net smtp

我正在尝试使用C#(System.Net.Mail / Framework 4)通过Google Apps / Gmail发送基本电子邮件,但我遇到了麻烦。

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

我的代码如下:

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

            //Set the addresses
            mail.From = new MailAddress("myemail@gmail.com", "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="myemail@gmail.com" deliveryMethod="Network">
          <network host="smtp.gmail.com" 
              userName="myemail@gmail.com"
              password="password" 
              port="587" />
      </smtp>

在我的故障排除过程中,我尝试过:

  • 使用我的个人Gmail地址以及通过Google Apps托管的域名中的其他地址。
  • 使用端口25,465和587
  • 在c#代码中硬编码配置设置,而不是使用web.config
  • 从多个网络位置发送和telnet以确保防火墙/ ISP没有阻止它
  • 确保在GMail设置中启用了POP(根据Google,这应该会启用使用SMTP发送的功能)
  • 更改发送和回复地址以确保它们与帐户匹配(显然是GMail必需品)。

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

1 个答案:

答案 0 :(得分:1)

您的代码看起来很好。你说你试过Telneting。你真的能通过telnet发送电子邮件吗?

您可以尝试删除

from="myemail@gmail.com" deliveryMethod="Network"

来自你的smtp标签,因为它们对你正在做的事情不是必需的。

修改

Telnet通常允许您连接到smtp服务器并发送16(?)字节的数据,然后才能将您解雇。如果您没有收到these之类的回复,那么很可能就是这种情况。

尝试打开防火墙上的端口587,看看是否可以通过telnet(EHLO,ECHO等)实际与smtp服务器进行交互。