我正在尝试发送邮件表单帖子,但是当表单发布时它会尝试发送邮件然后超时。超时的代码是:
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);
答案 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
正如评论中所提到的,您可能还需要允许"不太安全的应用"访问您的帐户 -