在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" 访问您的帐户 -
我正在尝试发送表单发布的邮件,但是当表单发布时它尝试发送邮件然后超时。超时的代码是这样的:
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" 访问您的帐户 -