2016-01-28 2 views
0

Я пытаюсь отправить электронное письмо с использованием класса C# SmtpClient. Блок «catch» запускается после попытки «отправить» сообщение. Когда я перехожу к рассмотрению исключения, InnerException говорит «Не удается подключиться к удаленному серверу», и в сообщении говорится «Отказ от отправки почты». StatusCode - «Общий сбой».Попытка отправить электронную почту с классом SMTP (C#)

Я пропустил определенные верительные грамоты? Мне нужно установить еще несколько полей в экземпляр SmtpClient или MailMessage?

Вот код:

private void sendEmail(string recepientEmailAddress) { 
     string subjectEmail = "Subject Email"; 
     MailAddress to = new MailAddress("[email protected]"); 
     MailAddress from = new MailAddress("[email protected]"); 

     MailMessage message = new MailMessage(from, to); 
     message.Subject = subjectEmail; 
     message.IsBodyHtml = true; 
     message.Body = "Body example"; 

     try 
     { 
      SmtpClient sc = new SmtpClient(ConfigurationManager.AppSettings["MailServer"].ToString()); 
      sc.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 
      sc.DeliveryMethod = SmtpDeliveryMethod.Network; 
      sc.EnableSsl = true; 
      sc.UseDefaultCredentials = true; 
      sc.Send(message); 
     } 
     catch (Exception e) 
     { 
      Helpers.ErrorLogger.ProcessError(e.Message, e.StackTrace, "RegistrationController", "SendEmail"); 
     } 
    } 
+0

Похоже, что 'MailServer', указанный в' AppSettings', недопустим. – user700390

+0

отсутствует имя пользователя и пароль чувак, на который вы пытаетесь отправить письмо с –

+0

@AsafShazar, что такое способ подключения пользователя и пароля к электронной почте, которую я отправляю? Благодарю. – tonyleMill

ответ

2
private void sendEmail(string recepientEmailAddress) { 
     string subjectEmail = "Subject Email"; 
     MailAddress to = new MailAddress("[email protected]"); 
     MailAddress from = new MailAddress("[email protected]"); 

     MailMessage message = new MailMessage(from, to); 
     message.Subject = subjectEmail; 
     message.IsBodyHtml = true; 
     message.Body = "Body example"; 

     try 
     { 
      SmtpClient sc = new SmtpClient(ConfigurationManager.AppSettings["MailServer"].ToString()); 
      sc.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 
      sc.DeliveryMethod = SmtpDeliveryMethod.Network; 
      sc.EnableSsl = true; 
      sc.Host="smtp.gmail.com" 
      sc.port = 587; 
      sc.UseDefaultCredentials = true; 
      sc.Send(message); 
     } 
     catch (Exception e) 
     { 
      Helpers.ErrorLogger.ProcessError(e.Message, e.StackTrace, "RegistrationController", "SendEmail"); 
     } 
    } 

добавления порта (Gmail: 587)

добавления хоста (smtp.gmail.com

, если это не работает, попробуйте добавить имя пользователя и пароль изменить с

sc.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 

К

sc.Credentials = new System.Net.NetworkCredential("username","password") 
+0

Спасибо за ответ. Электронная почта, которую я отправляю «от», - это прогноз. Так будет работать «sc.Host = smtp.outlook.com»? – tonyleMill

+0

@tonyleMill Что значит, что вы отправляете из Outlook? Если ваш сайт не размещен на сайте outlook.com, не отправляйте его с сайта outlook.com. – mason

+0

@mason Я просто пытаюсь понять, почему у хоста и порта есть «gmail». – tonyleMill

0
public static bool Send() 
    { 
     try 
     { 
      var fromAddress = new MailAddress("[email protected]"); 
      var toAddress = new MailAddress("[email protected]"); 
      const string subject = "subjects"; 
      const string userName = "serverCredentail"; 
      const string Password = "serverpassword"; 
      const string body = "Body"; 
      var smtp = new SmtpClient 
      { 
       Host = "servernameexample.com", 
       Port = 25, 
       EnableSsl = true, 
       DeliveryMethod = SmtpDeliveryMethod.Network, 
       UseDefaultCredentials = false, 
       Credentials = new NetworkCredential(userName, Password) 
      }; 
      using (var message = new MailMessage(fromAddress, toAddress) 
      { 
       Subject = subject, 
       Body = body 
      }) 
      { 
       smtp.Send(message); 
      } 
     } 
     catch(Exception ex) 
     { 
      return false; 
     } 
     return true; 
    } 

Этот код должен работать, я просто проверял.

Смежные вопросы