SmtpClient - Время операции истекло

1

Я пытаюсь создать небольшое приложение с помощью С# для отправки электронной почты, но я не могу заставить его работать, даже используя порт 587 (GMail) TLS или 465 (GMail SSL). Я не уверен, что вызывает мою проблему, должен ли я изменить файл app.config? Вот мой код:

try
{
  SmtpClient client = new SmtpClient("smtp.gmail.com", 465);
  client.EnableSsl = true;
  client.Timeout = 10000;
  client.DeliveryMethod = SmtpDeliveryMethod.Network;
  client.UseDefaultCredentials = false;
  client.Credentials = new NetworkCredential("myemailid", "mypwd");

  MailMessage msg = new MailMessage();
  msg.To.Add(txtTo.Text);
  msg.From = new MailAddress("myemailid");
  msg.Subject = txtSub.Text;
  msg.Body = txtMsg.Text;

  client.Send(msg);
  MessageBox.Show("sent");
}
catch (Exception ex) 
{
    MessageBox.Show(ex.Message);
}
  • 0
    Какую ошибку вы получаете? Не могли бы вы опубликовать исключение?
  • 0
    Время операции истекло
Показать ещё 6 комментариев
Теги:
smtp

1 ответ

3

Если вы получаете исключение тайм-аута, то это означает, что SmtpClient не смог подключиться к SMTP-серверу или соединение было потеряно в какой-то момент во время отправки.

Это может быть вызвано брандмауэром на вашем конце, который блокирует исходящие подключения к серверу или блокирует исходящие соединения на порту 465.

  • 2
    Я потратил полтора дня на устранение подобной проблемы, но обнаружил, что это была Symantec Endpoint Protection, которая блокировала исходящую почту. Как ни странно, мои модульные тесты работали, но при работе в качестве службы Windows я получал эту ошибку.
  • 1
    Я получил справку на странице справки Google, в которой предлагалось использовать порт 25 с SSL, и это сработало для меня.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню