2016-01-18 1 views
0

Я пытаюсь отправить электронное письмо с моего контроллера (MVC4) через сервер обмена, т. Е. (Outlook.office365.com, как я могу видеть из моих настроек внешнего вида), используя SMTP, но не удалось. Я пробовал решение из многих предыдущих сообщений, но не могу понять. Я искренне признателен за любую помощью от вас, ребят .. Вот моя конфигурация почты:Ошибка при отправке электронной почты с использованием сервера SMTP и обмена office365.com

<system.net> 
    <mailSettings> 
     <smtp> 
     <network host="smtp.office365.com" userName="[email protected]" password="defaultPassword"/> 
     </smtp> 
    </mailSettings> 
    </system.net> 

Вот мой класс для электронной почты: общественного класс электронной почты { общественной почты() {}

private string Sender{ get; set; } 
    private List<string> Recipients { get; set; } 
    private string Subject { get; set; } 
    private string Body { get; set; } 

    public bool SendEmail() 
    { 
     try 
     { 
      var smptClient = new SmtpClient { EnableSsl = true }; 

      MailMessage newEmail = new MailMessage(); 
      foreach (var reciepent in this.Recipients) 
       newEmail.To.Add(new MailAddress(recipient)); 

      newEmail.From = new MailAddress(this.Sender); 
      newEmail.Subject = this.Subject; 
      newEmail.Body = this.Body; 
      newEmail.IsBodyHtml = false; 

      smptClient.Send(newEmail); 

      return true; 
     } 
     catch { return false; } 
    } 
} 

в приведенном выше коде, если я использую «EnableSsl = true», я получаю сообщение об ошибке «Сервер не поддерживает безопасные соединения». Тем не менее, если я отключу ssl, я получаю следующую ошибку:

Для SMTP-сервера требуется защищенное соединение, или клиент не прошел аутентификацию. Ответ сервера: 5.7.57 SMTP; Клиент не был аутентифицирован для отправки анонимной почты во время MAIL FROM

ответ

1
use this piece of code: 

MailMessage msg = new MailMessage(); 
    msg.To.Add(new MailAddress("[email protected]", "SomeOne")); 
    msg.From = new MailAddress("[email protected]", "You"); 
    msg.Subject = "This is a Test Mail"; 
    msg.Body = "This is a test message using Exchange OnLine"; 
    msg.IsBodyHtml = true; 

    SmtpClient client = new SmtpClient(); 
    client.UseDefaultCredentials = false; 
    client.Credentials = new System.Net.NetworkCredential("your user name", "your password"); 
    client.Port = 25; // give 587 if 25 is blocked 
    client.Host = "smtp.office365.com"; 
    client.DeliveryMethod = SmtpDeliveryMethod.Network; 
    client.EnableSsl = true; 
    try 
    { 
     client.Send(msg); 
     lblText.Text = "Message Sent Succesfully"; 
    } 
    catch (Exception ex) 
    { 
     lblText.Text = ex.ToString(); 
    } 
+0

Спасибо, но я уже пробовал это. Это приводит к тем же ошибкам, что и в моем вопросе –

+0

. Проверьте, какой номер порта вы используете. может быть, ваш порт заблокирован –

+0

Раньше я использовал порт 25, но я получал ошибку «Сервер не поддерживает безопасные соединения». с включенным SSL, поэтому я использовал порт 587, но все же он не работает –

1

Наконец-то я решил проблему, связанную с доменом, который у нас есть. Для человека, который сталкивается с подобной проблемой, вот как я его исправил. Follwoing были мои настройки электронной почты:

<network host="smtp.office365.com" userName="[email protected]" password="defaultPassword"/> 

Если вы находитесь на домене, то имя пользователь должен иметь домен упоминается ваше имя пользователя т.е. [email protected] и грохнуть :)

Ура! !

+0

круто :) ... наконец, это сработало для вас –

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