在cshtml中发送邮件时出现超时

时间:2015-11-03 09:39:26

标签: c# html email razor gmail

我正在尝试发送邮件表单帖子,但是当表单发布时它会尝试发送邮件然后超时。超时的代码是:

    MailMessage mail = new MailMessage();
    mail.From = new MailAddress("someone@example.com");
    mail.To.Add("someoneElse@example.com");

    SmtpClient smtp = new SmtpClient();
    smtp.Port = 465;
    smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
    smtp.UseDefaultCredentials = false;
    smtp.Host = "smtp.gmail.com";

    mail.Subject = "Hello";
    mail.Body = "World!";
    smtp.Send(mail);

1 个答案:

答案 0 :(得分:0)

这几乎肯定是您的客户端设置的问题。

如果您使用的是端口465,则需要使用SSL - 见https://support.google.com/a/answer/176600?hl=en 在您当前的客户端设置中,这将被省略。

另外,我认为你错过了你的证书。

尝试将您的客户更改为

SmtpClient client = new SmtpClient();
client.Host = "smtp.gmail.com";
client.Port = 587;
client.EnableSsl = true; //ssl is required
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("your-email@gmail.com", "YourPassword");
client.Timeout = 20000; //increase the timeout

正如评论中所提到的,您可能还需要允许"不太安全的应用"访问您的帐户 -

信息在这里http://support.google.com/accounts/answer/6010255