在cshtml中发送邮件时超时

getting timeout when sending a mail in cshtml

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

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

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

如果您使用端口 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

如评论中所述,您可能还需要允许 "less secure apps" 访问您的帐户 -

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