无法通过gmail服务器发送电子邮件,操作超时

时间:2015-07-24 14:56:29

标签: c# asp.net email gmail

修改
只是邮件服务器没有及时响应的问题,我尝试了第三个提供商,它工作正常。 结束编辑

我正在尝试向新用户发送用户注册电子邮件。

出于测试目的,我转而使用Gmail的SMTP服务器,因为我想我的邮件提供商可能会在某处阻止请求,但问题仍然存在。

我所知道的是SmtpClient.Send()来电是超时的。这是我的代码:

public void SendEmail(string To, string Subject, string Body)
{
    SmtpClient smtp = new SmtpClient(server, port);
    smtp.Credentials =
        new NetworkCredential("<my google account>", "<my google password>");
    smtp.EnableSsl = true;
    using (MailMessage msg = 
        new MailMessage("<my private email account>", To, Subject, Body))
    {
        msg.IsBodyHtml = true;
        smtp.Send(msg);
    }
}

这是堆栈跟踪:

  

发现了System.Net.Mail.SmtpException   的HResult = -2146233088
  消息=操作已超时。   来源=系统
  堆栈跟踪:

     

在System.Net.Mail.SmtpClient.Send(MailMessage消息)
  at Ortund.Utilities.Mail.SendEmail(String To,String Subject,String Body)
  在e:\ Development \ Base \ Ortund.Utilities \ Mail.cs:第91行   在Ortund.Utilities.ServiceMail.SendUserRegistrationEmail(用户来源)
  在r:\ Users \ Ortund \ Documents \ Visual Studio 2013 \ Projects \ OrtundWeb \ Utilities \ ServiceMail.cs:第102行
  在OrtundWeb.Controllers.UserController.Post(用户来源)
  在r:\ Users \ Ortund \ Documents \ Visual Studio 2013 \ Projects \ OrtundWeb \ Controllers \ UserController.cs:第63行
  的InnerException:

不是特别有帮助......我想因为SSL或凭证可能连接失败所以我添加了这些没有变化...

任何人在这里都有任何建议,因为我完全没有想法。

2 个答案:

答案 0 :(得分:0)

他们正在阻止尝试发送电子邮件的应用程序(因为它们应该如此)。只需从您自己的服务器发送电子邮件,并将replyTo属性设置为您的Gmail电子邮件地址,它看起来就像是来自您的帐户。

答案 1 :(得分:0)

我还使用GMail SMTP服务器进行测试。我在VB.NET中使用以下内容

    '*****For testing using GMail smtp server****** Comment out for production
    'Smtpclient to send the mail message

    sSMTP = "smtp.gmail.com"
    SmtpMail.Port = 587        '587     'For some reason vb.net doesn't like port 465.  Access does.
    SmtpMail.EnableSsl = True
    SmtpMail.UseDefaultCredentials = False
    SmtpMail.Timeout = 30000    'An Int32 that specifies the time-out value in milliseconds. The default value is 100,000 (100 seconds). 

    SmtpMail.Credentials = New System.Net.NetworkCredential("username", "gmail account name")