2016-11-28 103 views
2

我想通过smtp.gmail.com在我的C#应用​​程序中发送电子邮件。 我的代码一直运行良好,直到上周,我突然收到一条错误消息。 我允许我的Gmail账户中安全性较低的应用程序,启用IMAP,没有任何更改。使用gmail通过C#发送电子邮件

第一次验证工作正常,我得到“端口打开”。

下面是代码:

using (TcpClient tcpClient = new TcpClient()) 
    { 
     try 
     { 
      tcpClient.Connect("smtp.gmail.com", 587); 
      MessageBox.Show("Port open"); 
     } 
     catch (Exception) 
     { 
      MessageBox.Show("Port closed"); 
     } 
    } 

    SmtpClient smtp = new SmtpClient 
    { 
     Host = "smtp.gmail.com", 
     Port = 587, 
     EnableSsl = true, 
     UseDefaultCredentials = false, 
     DeliveryMethod = SmtpDeliveryMethod.Network, 
     Credentials = new System.Net.NetworkCredential("[email protected]", "mypassword") 
    }; 

    using (var message = new MailMessage("[email protected]", "[email protected]") 
    { 
     Subject = "Test", 
     Body = "Hi" 
    }) 
    { 
     smtp.Send(message); 
    } 

} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message); 
} 

我得到的错误:

“服务不可用,关闭传输通道
服务器响应为:无法连接到SMTP服务器2A00:1450 :400C:C01 :: 6C(2A00:1450:400C:C01 :: 6C:587),连接错误10061" }

感谢您的帮助

+1

尝试在另一个gmail帐户上检查您的代码,gmail可能会对您的smtp活动做出反应并限制连接 – Vladimir

+0

有时,10061错误是由本地计算机或网络连接上的防火墙或防病毒引起的。 我有一个学校网络问题,无法发送电子邮件,但在家里我可以。 –

+0

你与TcpClient的第一次连接是非常无用的,你为什么不放弃它?我不知道来自同一个IP的多个活动连接的Google策略。假设您的TcpClient连接没有失败,那么您应该检查您的应用程序是否包含在GMail的_Less安全应用程序列表中。同时检查本地问题,本地/域网络策略可能会阻止您的连接。 –

回答

0

我想你需要检查你的操作系统的防火墙权限。好像你不能听端口587.

你可以发送你的netstat -a输出吗?