2010-12-12 72 views
0

几周前,我的ASP.NET网站停止发送用户评论,我通过Gmail邮件服务器将这些评论通过电子邮件发送到我的电子邮件帐户(smtp.gmail.com)。我打开的项目我的开发机器上它再次失败,出现以下异常消息几分钟后发送电子邮件:ASP.NET无法通过Gmail SMTP发送电子邮件,但Outlook 2007成功

发送邮件失败

无法读取传输连接的数据:net_io_connectionclosed。

我使用Gmail的SMTP端口为465,MailClient.EnableSSL = True。 奇怪的是我的Office Outlook 2007使用相同的设置,并且使用相同的Gmail帐户发送邮件时没有任何问题。

有什么想法?

+0

要澄清,它是在您的生产env。但现在不是在prod或本地工作? – 2010-12-12 13:53:17

+0

它在任何地方都能正常工作。 2个星期前,我们意识到该网站存在问题;当我们检查时,我们发现它不再有效,既不在生产服务器上,也不在本地。然后,我使用我的Office Outlook 2007查看本地连接或gmail是否存在问题,并发送邮件(使用我们在网站中使用的相同邮件帐户)。 – TheAgent 2010-12-12 16:56:23

回答

3

此代码适用于我。请注意,端口号与您正在尝试的465不同。我几乎可以肯定,我也尝试过465,但没有运气。

var msg = new MailMessage(new MailAddress(recipient, "SCS Web Site"), new MailAddress(toAddress)) 
       { 
        Body = BuildMailBody(), 
        Subject = "SCS Web Site Message" 
       }; 
var smtp = new SmtpClient 
       { 
        Host = "smtp.gmail.com", 
        Port = 587, 
        EnableSsl = true, 
        UseDefaultCredentials = false, 
        Credentials = new NetworkCredential(myGmailUser, myGmailPassword) 
       }; 
smtp.Send(msg); 
+0

感谢您的回复,但这些设置不起作用。使用端口#587我收到消息“发送邮件失败 - 无法连接到远程服务器”。即使你的端口#工作,这也不能解释为什么我的Office Outlook可以使用465发送邮件。这让我疯狂! – TheAgent 2010-12-12 13:03:57

0

你不会碰巧有一个防火墙不允许出站连接,那么,特别是允许Outlook打通。 。 。

+0

当我们的主服务器发送邮件失败时(2周前),我意识到了这个问题。然后我在我的开发机器上测试了代码,发生了同样的事情。没有人碰到任何一台机器;所以我认为它与防火墙没有任何关系。 – TheAgent 2010-12-12 13:53:02

-1

我发现formmail通过gmail(在Windows服务器上)的一个奇怪之处是端口号是问题。我的代码和你的代码很相似,但只有当我将端口改为25而不是587或465时才有效。这可能就是你需要的。