2013-08-26 3 views
2

Программа работает на нескольких компьютерах в пределах одной сети. Почта отправляется через внутренний сервер. Когда я пытаюсь отправить электронное письмо от SmtpClient, он работает на некоторых компьютерах, но на других он мне дает:Только получение «соединения не может быть сделано, потому что целевая машина активно отказала ему» на определенных компьютерах

«System.Net.WebException: невозможно подключиться к удаленному серверу -> System.Net.Sockets. SocketException: соединение не может быть сделано, потому что целевая машина активно отказалась от него. 10.1.0.74:25 «

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

Код для отправки электронной почты выглядит следующим образом:

public void SendMessage(string subject, string messageBody, string fromAddress, string toAddress) 
    { 
     MailMessage message = new MailMessage(); 
     SmtpClient client = new SmtpClient("10.1.0.74", 25); 

     // Set the sender's address 
     message.From = new MailAddress(fromAddress); 

     // Allow multiple "To" addresses to be separated by a semi-colon 
     if (toAddress.Trim().Length > 0) 
     { 
      foreach (string addr in toAddress.Split(';')) 
      { 
       if (addr.Trim() != "") 
        message.To.Add(new MailAddress(addr)); 
      } 
     } 

     // Set the subject and message body text 
     message.Subject = subject; 
     message.Body = messageBody; 
     message.IsBodyHtml = true; 

     // Set the SMTP server to be used to send the message 
     //client.Host = "smtp.gmail.com"; 
     System.Net.NetworkCredential a = new System.Net.NetworkCredential("User", "Pass"); 
     //client.EnableSsl = true; 
     client.DeliveryMethod = SmtpDeliveryMethod.Network; 
     client.UseDefaultCredentials = false; 
     client.Credentials = a; 
     // Send the e-mail message 
     client.Send(message); 
    } 

Edit: проверки связи IP с компьютера, который не работает, получили следующее. enter image description here

+2

Работает ли этот порт в telnet? – SLaks

+1

10.1.0.74 маршрутизируется с компьютеров, где он не работает? –

+0

Когда я делаю telnet 10.1.0.74 25 Я получаю сообщение «Не удалось открыть соединение с хостом, на порте 25: Не удалось подключиться». Я не знаю, как рассказать, что вы спрашиваете у Шона. – Shay

ответ

3

Включение SSL в клиенте и попробовать другие порты:

client.EnableSsl = true; 
client.Port = 587; 
// or 
client.Port = 465; 

Также вы можете проверить соединение с CMD команды:

telnet smtp.gmail.com 587 

Успешный ответ обычно выглядит следующим образом:

220 mx.google.com ESMTP 
+0

Да. Это сработало. Благодаря! :) –