【问题标题】:SMTP Gmail timing outSMTP Gmail 超时
【发布时间】:2013-11-24 19:50:11
【问题描述】:

不知道为什么会这样。我搜索过的每一个地方都告诉我我做对了。但是每次我尝试发送邮件时,smtpserver.Send(mail) 都会超时

private void emailReport(string email_address,int begDatabaseCount, int endDatabaseCount)
        {
            SmtpClient smtpserver = new SmtpClient();
            MailMessage mail = new MailMessage();
            smtpserver.EnableSsl = true;
            smtpserver.Port = 465;
            smtpserver.Host = "smtp.gmail.com";           
            smtpserver.Credentials = new NetworkCredential("mtaylor@atr.com", "password");
            smtpserver.UseDefaultCredentials = false;
            mail = new MailMessage();
            mail.From = new System.Net.Mail.MailAddress("mtaylor@atr.com", "ATR Reports");
            mail.To.Add(email_address);
            mail.Subject = "FNAS Report - " + DateTime.Now;
            mail.Body += "<u><b>FNAS Report for " + DateTime.Now + "</u></b>" + "\r\n \r\n";
            mail.Body += "Beginning Database Count - " + begDatabaseCount + "\r\n" + "\r\n";
            mail.Body += "End Database Count - " + endDatabaseCount + "\r\n" + "\r\n";
            mail.Body += "<b>Total Imported Orders = " + (endDatabaseCount - begDatabaseCount) + "<b>" + "\r\n" + "\r\n";
            mail.IsBodyHtml = true;

            smtpserver.Send(mail);
        }

端口 465 = 1 分钟后超时

Port 587 = "SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1 需要身份验证。"

【问题讨论】:

    标签: c# smtp gmail


    【解决方案1】:

    正如@kostyan 所说,正确的端口是 587,但要进行身份验证,您需要允许来自您 gmail 帐户中不太安全的应用程序的访问。 试试看here

    它对我有用,希望它有帮助..

    【讨论】:

      【解决方案2】:

      我发现,当我尝试使用 google smtp 来欺骗发件人地址时(例如,使用 FromAddress 作为我的 gmail 帐户名称以外的名称),我收到了身份验证错误消息或只是超时。

      【讨论】:

        【解决方案3】:

        这个帖子帮助了我。我不确定为什么这段代码有效,而我的无效。

        Sending email in .NET through Gmail

        using System.Net;
        using System.Net.Mail;
        
        var fromAddress = new MailAddress("from@gmail.com", "From Name");
        var toAddress = new MailAddress("to@example.com", "To Name");
        const string fromPassword = "fromPassword";
        const string subject = "Subject";
        const string body = "Body";
        
        var smtp = new SmtpClient
                   {
                       Host = "smtp.gmail.com",
                       Port = 587,
                       EnableSsl = true,
                       DeliveryMethod = SmtpDeliveryMethod.Network,
                       UseDefaultCredentials = false,
                       Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
                   };
        using (var message = new MailMessage(fromAddress, toAddress)
                             {
                                 Subject = subject,
                                 Body = body
                             })
        {
            smtp.Send(message);
        }
        

        【讨论】:

        • 它也适用于我,而其他的都没有。我也不知道为什么
        • 您需要按此顺序拥有 Credentials 和 UeDefaultCredentials。帖子中的代码颠倒了。
        【解决方案4】:

        您确定端口,在我的代码中我将其设置为 587,否则看起来相似并且可以正常工作。

        【讨论】:

        • 我认为Gmail的端口号应该是587
        • 当我使用端口 587 时,我收到此错误“SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1 需要身份验证。”即使我有 EnableSSL =真的
        • 我看到的唯一其他区别是您缺少这一行 smtpserver.DeliveryMethod = SmtpDeliveryMethod.Network;
        • 刚刚在其中添加了 DeliveryMethod - 仍然没有运气。
        • 我在使用 gmail smtp 服务器发送电子邮件时遇到问题,当我将端口形式 465 更改为 587 时它工作了,这很奇怪,因为在 gmail 帮助页面上他们说端口 465。
        猜你喜欢
        • 2012-06-01
        • 2012-11-14
        • 2012-06-01
        • 2011-03-26
        • 2013-03-11
        • 2016-10-19
        • 2016-10-26
        • 2015-09-13
        • 2021-11-01
        相关资源
        最近更新 更多