SmtpException - Соединение было принудительно закрыто удаленным хостом. / Время операции истекло - PullRequest
0 голосов
/ 30 января 2011

все. Мое намерение в этом проекте - создать систему оповещения о завершении процесса, позволяя другим программам позвонить в мою программу и отправить SMS-сообщение на мобильный телефон с сообщением, информирующим получателя о завершении процесса (в моем случае, Визуализация 3ds Max).

К сожалению, этот раздел кода полностью терпит неудачу. Он выполняется без проблем вплоть до «smtp.Send (msg);», после чего SmtpException сообщает мне, что удаленный хост принудительно закрыл мое «существующее соединение».

   MailMessage msg = new MailMessage();
   msg.From = new MailAddress("zaccrites@att.net");
   msg.To.Add("zaccrites@att.net");
   msg.Subject = "Subject";
   msg.Body = "THIS IS A MESSAGE!";

   SmtpClient smtp = new SmtpClient("smtp.att.yahoo.com", 645);
   //smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
   //smtp.UseDefaultCredentials = false;
   smtp.Credentials = new NetworkCredential("zaccrites@att.net", "password");
   smtp.EnableSsl = true;

   Console.WriteLine("Send Start...");
   smtp.Send(msg);
   Console.WriteLine("Message Sent");

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

Спасибо всем.

Интересно, что удаленный хост больше не принудительно закрывает мое соединение. Время операции просто истекло.

Ответы [ 2 ]

0 голосов
/ 30 января 2011

Есть много возможных причин:

  1. Устройство, на котором он работает, блокирует соединение. Например брандмауэр / антивирус.
  2. Устройство в локальной сети устройства блокирует соединение. Конфигурация брандмауэра / маршрутизатора.
  3. Сеть интернет-провайдера (на которой включен аппарат) блокирует соединение.
  4. SMTP-сервер, к которому вы подключаетесь (Yahoo), просто не любит вашу машину.

Последний является наиболее вероятным. Лучший способ устранения неполадок - попытаться отправить сообщение на другой сервер на другом сервере.

0 голосов
/ 30 января 2011

Я не уверен, почему он не работает, вы уверены, что ваш брандмауэр не блокирует вас? Попробуйте подключиться через telnet к SMTP-серверу (dos prompt -> telnet smtp.att.yahoo.com 645. Кроме того, попробуйте добавить информацию о почтовом сервере в app.config, например:

<system.net>
    <mailSettings>
        <smtp deliveryMethod="Network" from="testuser@domail.com">
            <network defaultCredentials="true" host="smtp.att.yahoo.com" port="645" userName="yourUser" password="yourPass"/>
        </smtp>
    </mailSettings>
</system.net>
...