【问题标题】:Operation has timed out when sending email using asp.net and smtp.gmail.com使用 asp.net 和 smtp.gmail.com 发送电子邮件时操作超时
【发布时间】:2014-03-07 22:22:17
【问题描述】:

我正在尝试使用我的 asp.net 应用程序发送电子邮件。这是我的代码:

string smtpServer = ConfigurationManager.AppSettings["smtpServer"].ToString();
            int smtpPort = int.Parse(ConfigurationManager.AppSettings["smtpPort"]);
            string smtpUser;
            string smtpPwd;

            if (administrativo)
            {
                smtpUser = ConfigurationManager.AppSettings["smtpUser"].ToString();
                smtpPwd = ConfigurationManager.AppSettings["smtpPwd"].ToString();
                //smtpUser = "licitacoeslic@gmail.com";
                //smtpPwd = "liclicitacoes";


            }
            else
            {
                smtpUser = ConfigurationManager.AppSettings["smtpNoReplyUser"].ToString();
                smtpPwd = ConfigurationManager.AppSettings["smtpNoReplyPwd"].ToString();
                //smtpUser = "licitacoeslic@gmail.com";
                //smtpPwd = "liclicitacoes";
            }


            bool smtpSslEnabled = bool.Parse(ConfigurationManager.AppSettings["smtpSslEnabled"]);

            SmtpClient smtpClient = new SmtpClient();
            smtpClient.Host = smtpServer;

            if (smtpPort > 0)
                smtpClient.Port = smtpPort;

            if (smtpUser != String.Empty)
                smtpClient.Credentials = new NetworkCredential(smtpUser, smtpPwd);

            smtpClient.EnableSsl = smtpSslEnabled;

            //transforma a mensagem de e-mail em html para habilitar o uso do logo
            MailMessage mm = new MailMessage(de, para, assunto, texto);
            mm.IsBodyHtml = true;

            smtpClient.Send(mm);

我已尝试将 465 和 587 作为端口号,交换了我的凭据,因为显然,我的 web.config 中的旧版本不再存在,通过 cmd ping smtp.gmail.com 并且它工作正常。编辑:您似乎需要通过这种方法使用 gmail 帐户。是的,我正在使用一个。

有趣的是:同样的代码,昨天工作。我在这里有什么遗漏吗?

编辑:这是经过一些测试后发生的情况:

1) 我尝试使用我的私人 gmail 帐户查看是否会引发相同的超时异常。有效。我创建的作为凭据一部分的 gmail 帐户不起作用。

2) 现在,当我尝试查看我创建的 gmail 帐户是否有效时,我得到了这个异常:

5.4.5 已超出每日发送配额。 n4sm29019478yhc.13 - gsmtp

那么,什么?我每天可以发送的电子邮件数量有限制吗?

【问题讨论】:

标签: c# asp.net


【解决方案1】:

我试过了,效果很好

var client = new SmtpClient("smtp.gmail.com", 587)
{
     UseDefaultCredentials = false,
     EnableSsl = true,
     Timeout = 20000,
     Credentials = new NetworkCredential("someguy", "password")  // gmailid is someguy@gmail.com
};

可能是你的一些配置设置不正确

【讨论】:

  • 我使用的参数与您使用的相同。唯一的补充是超时。但是使用此值会更快地引发异常。它没有用。
  • 不需要设置超时时间,我只是检查了一下,设置为20秒,你可以离开。但仅此而已。您可能需要的另一件事是,您可以使用 google smtp 拍摄的电子邮件数量。我猜它仅限于 99。
【解决方案2】:

那么,什么?我每天可以发送的电子邮件数量有限制吗?

关于这一点,Gmail 具有垃圾邮件保护功能(这通常很好)。发送一些电子邮件后,Gmail 要求您登录 Gmail 帐户(站点),该站点会要求您输入验证码。验证码发送后,您可以继续发送电子邮件,但您仍然有每天发送电子邮件的限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 2019-01-21
    相关资源
    最近更新 更多