Lokesh Zende Ответов: 1

Ошибка отправки почты - не удается подключиться к удаленному серверу


Привет,
Это выглядит довольно просто, но я не могу заставить его работать.
Я пытаюсь отправить электронное письмо из своего приложения. Простая форма запроса.
Он принимает адрес пользователя, имя, контактный номер и т. д. и отправляет электронное письмо на электронный идентификатор клиента.
Ниже приведен код.
SmtpClient client = new SmtpClient("ip address");
client.EnableSsl = true;
client.Timeout = 20000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("user@domain.com", "password"); //webmail.domain.com
MailMessage msg = new MailMessage();
msg.To.Add(txtEmailId.Text);
msg.From = new MailAddress("user@domain.com");
msg.Subject = "Test";
msg.Body = txtComments.Text;
client.Send(msg);

Это дает ошибку, - Время операции истекло." Поэтому я увеличил тайм-аут с 20000 до 50000.
Но не повезло.

Клиент использует веб-почту.
Код был написан другими разработчиками, которые, я не уверен, работали и раньше.
Я могу пинговать ip-адрес, указанный для SMTP-сервера.

Любая помощь в этом была бы очень кстати.

Спасибо,
Лок

Что я уже пробовал:

Я попробовал изменить время ожидания. Но я получил еще одну ошибку. - Неудачная отправка почты. Не удается подключиться к удаленному серверу."

David_Wimbley

Скорее всего, вам нужно посмотреть, каков номер порта для целевого сервера, а также использует ли он SSL. Это будет первое место, с которого я начну.

Jochen Arndt

SmtpClient порт по умолчанию-25. Почти все SMTP-серверы в настоящее время используют безопасный транспорт с портом 587. Очень вероятно, что это именно так, потому что вы получите тайм-аут, когда ни одна служба не прослушивает используемый порт-

Вы должны спросить администратора сервера или проверить документацию, какой порт используется (и какие методы аутентификации).

Rob Philpott

Ах, но я понимаю, что SMTPClient не поддерживает это - только начальное незашифрованное соединение, повышенное до безопасного с помощью STARTTLS.

Rob Philpott

Извините, ошибка мыши, это было предназначено для комментария выше. Хватит на один день, я иду домой!

ZurdoDev

Посмотрите, к какому smtp-серверу вы пытаетесь подключиться.

Afzaal Ahmad Zeeshan

Можете ли вы подключиться к этому IP-адресу? Убедитесь, что настройки брандмауэра разрешают связь.

Lokesh Zende

Вместо ip-адреса для SMTP я использовал доменное имя, и теперь все работает нормально.
Спасибо всем за ваши ответы :)
Я действительно ценю.

1 Ответов

Рейтинг:
6

Sheila Pontes

Привет,

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

public static string SendEmail(string strFrom, string strTo, string strCc, string strBcc, string strSubject, string strBody, string strAttach)
    {
        
      
  
      string strResults = "";
      MailMessage objEmail = null;
      SmtpClient objSmtp;
      try
      {
          objEmail = new MailMessage();
          //from email
          objEmail.From = new MailAddress(strFrom);
          objEmail.To.Add(strTo.Replace(";", ","));// To add more than recipient, separete for comma. 

	  //ocult copy 	
          if (strBcc != "")
              objEmail.Bcc.Add(strBcc.Replace(";", ","));// To add more than recipient, separete for comma. 

          //prioridade do email
          objEmail.Priority = MailPriority.Normal;

          //use true to enable html email, or false, to only text 
          objEmail.IsBodyHtml = true;
          objEmail.Subject = strSubject;    
          objEmail.Body = strBody;
          
          objEmail.SubjectEncoding = Encoding.GetEncoding("ISO-8859-1");
          objEmail.BodyEncoding = Encoding.GetEncoding("ISO-8859-1");

          //verify if you have attachment file
          if (strAttach != "")
          {
              Attachment objitemfile = new Attachment(strAttach);
              objEmail.Attachments.Add(objitemfile);
          }


          //create smtp client
          objSmtp = new SmtpClient();
          //add email server address 
          objSmtp.Host = "myserveremail@domain.com";

          //e-mail server authentication
          //objSmtp.Credentials = new NetworkCredential("username", "password");

          //send e-mail
          objSmtp.Send(objEmail);
          strResults = "OK";
      
      }
      catch (System.Exception erro)
      {
          strResults = " 1ª - HelpLink ==> " + erro.HelpLink;
          strResults += "\n\n 2ª - InnerException = " + erro.InnerException;
          strResults += "\n\n 3ª - Message = " + erro.Message;
          strResults += "\n\n 4ª - Source = " + erro.Source;
          strResults += "\n\n 5ª - StackTrace = " + erro.StackTrace;
          strResults += "\n\n 6ª - TargetSite = " + erro.TargetSite;
      }
      finally
      {
          objSmtp = null;
          objEmail.Dispose();
      }

      return strResults;
    }