【问题标题】:ASP.NET fails to send email through Gmail SMTP, but Outlook 2007 succeedsASP.NET 无法通过 Gmail SMTP 发送电子邮件,但 Outlook 2007 成功
【发布时间】:2025-12-28 10:55:11
【问题描述】:

大家好 几周前,我的 ASP.NET 网站停止发送用户 cmets,我通过 Gmail SMTP 服务器 (smtp.gmail.com) 将这些 cmets 通过电子邮件发送到我的电子邮件帐户。我在我的开发机器上打开了项目,几分钟后它再次无法发送电子邮件,并出现以下异常消息:

发送邮件失败

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

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

有什么想法吗?

【问题讨论】:

  • 澄清一下,它在您的生产环境中工作。但现在无论是在产品还是在本地都不能工作?
  • 它在任何地方都工作得很好。两周前,我们意识到该网站存在问题;当我们检查时,我们意识到它不再工作,无论是在生产服务器上还是在本地。然后我使用我的 Office Outlook 2007 查看本地连接是否有问题或 gmail 正在运行,它发送邮件正常(使用我们在网站中使用的相同邮件帐户)。

标签: asp.net outlook smtp gmail


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你不会碰巧有防火墙不允许出站连接,比如说,特别允许 Outlook 穿透。 . .

    【讨论】:

    • 当我们的主服务器无法发送邮件时(两周前),我意识到了这个问题。然后我在我的开发机器上测试了代码,同样的事情发生了。没有人碰过这两台机器;所以我认为它与防火墙没有任何关系。
    【解决方案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);
    

    【讨论】:

    • 感谢您的回复,但这些设置不起作用。使用端口# 587 我收到消息“发送邮件失败 - 无法连接到远程服务器”。即使您的端口号有效,也无法解释为什么我的 Office Outlook 可以使用 465 发送邮件。这让我发疯了!
    最近更新 更多