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

Nat*_*eid 6 .net c# 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);
Run Code Online (Sandbox Code Playgroud)

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

      <smtp from="myemail@gmail.com" deliveryMethod="Network">
          <network host="smtp.gmail.com" 
              userName="myemail@gmail.com"
              password="password" 
              port="587" />
      </smtp>
Run Code Online (Sandbox Code Playgroud)

在我的故障排除期间,我试过:

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

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

Joe*_*oel 1

你的代码看起来不错。你说你尝试过远程登录。您真的能够通过 telnet 发送电子邮件吗?

你可以尝试删除

from="myemail@gmail.com" deliveryMethod="Network"
Run Code Online (Sandbox Code Playgroud)

来自您的 smtp 标记,因为它们对于您正在做的事情来说不是必需的。

编辑:

Telnet 通常允许您连接到 smtp 服务器并发送 16(?)字节的数据,然后它会将您踢出。如果您没有得到这样的回复,那么情况很可能就是这样。

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