SMTP Gmail timing out

2019-01-25 00:11发布

问题:

Not sure why this is happening. Every where I've search tells me that i'm doing this right. But every time I try and send the mail, it times out on the 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);
        }

Port 465 = Time Out after 1 minute

Port 587 = "The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required. "

回答1:

As @kostyan said, the right port is 587, but to authenticate you need to allow access from less secure apps in your gmail account. Try it here

It worked for me, hope it helps..



回答2:

Are you sure about the port, in my code I have it as 587, otherwise looks similar and it works.



回答3:

This thread helped me. I'm not sure why this code worked and mine wasn't.

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);
}


回答4:

I have found that when I tried to spoof the sender address using google smtp (for instance, using FromAddress as something other than the name of my gmail account) I was getting either authentication error messages or simply timing out.



标签: c# smtp gmail