2016-10-14 3 views
0

Я уже несколько недель бил головой об этом, но сегодня был тот день, когда я обещал, что я исправлю это. Пока что я потерпел неудачу.SmtpClient на Hosted Exchange Server дает - попытка была сделана для доступа к сокету способом, запрещенным его разрешениями доступа xxx.xxx.xxx.xxx:25

Я пытаюсь отправить электронное письмо из размещенного приложения MVC через сервер Hosted Exchange. ИТ-отдел сказал и подтвердил, что они разрешили IP-адрес приложения MVC. Однако следующий код дает мне «Произошла попытка получить доступ к сокету, запрещенным разрешениями доступа ###. ###. ###. ###: 25" каждый раз.

ActionResult Test() 
{ 
    MailMessage message = new MailMessage(); 

    message.From = new MailAddress("valid.email.address"); 
    message.Subject = "Test Email"; 
    message.To.Add(new MailAddress("another.valid.email.address")); 

    message.Body = "Hey, this is a test!"; 

    using (SmtpClient client = new SmtpClient()) 
    { 
     client.Credentials = new System.Net.NetworkCredential("username", "password"); 
     client.Port = 25; 
     client.EnableSsl = true; // Either true or false gives same result 
     client.Host = "actual.host.url"; 

     try 
     { 
      client.Send(message); 
     } 
     catch (Exception ex) 
     { 
      ViewBag.LogMessage = string.Format("Error: {0}<br />{1}<br />{2}", ex.Message, ex?.InnerException.Message, ex?.InnerException?.InnerException.Message); 
      return View(); 
     } 

     ViewBag.LogMessage = string.Format("client.Host: {0}<br />Client.Port: {1}<br />Client.EnableSsl: {2}<br />message.To[0].Address: {3}", client.Host, client.Port, client.EnableSsl ? "true" : "false", message.To[0].Address); 
    } 

    return View(); 
} 

Значение СообщениеЖурнала является:

Error: Failure sending mail. 
Unable to connect to the remote server 
An attempt was made to access a socket in a way forbidden by its access permissions ###.###.###.###:25 

Любые предложения будут приветствоваться! Я пробовал порт 587 без везения. Я пробовал с и без учетных данных, с или без SSL, имя пользователя, соответствующее по адресу или нет. У меня не хватило сил, чтобы попробовать.

Спасибо!

+0

Вы пробовали какие-либо другие порты помимо '25'? По умолчанию порт 25 заблокирован довольно сильно в зависимости от версии обмена. Я бы попробовал 465 и дал ему шанс. Его недокументированный SMTP-порт для обмена с использованием STARTTLS. В моих программах я должен фактически использовать порт 587, чтобы отправить что-нибудь, так что дайте этот снимок также –

+0

@KevinBBurns Я пробовал 25, 587 и 465 с включенным и отключенным SSL без везения. ИТ-специалист сказал, что 25 использовали другие службы, отправляющие почту, поэтому я думаю, что это на моем конце. – ESDictor

+0

Если вы подключаетесь к этому порту на этом компьютере, вы получаете какие-либо данные? –

ответ

0

Пробуйте следующий код: первая строка сообщает SMTP-клиенту игнорировать любую проблему с сертификатом SSL, если она предоставляется поставщиком недействительным.

ServicePointManager.ServerCertificateValidationCallback =(sender,certificate, chain, sslPolicyErrors) => true; 
     var smtpClient = new SmtpClient("oba.exchangeserver.com") 
     { 
      Port = 587, 
      EnableSsl = true, 
      Credentials = 
       new NetworkCredential("username","password") 
     }; 
     return smtpClient; 
+0

Когда я использую этот код с моими значениями, я получаю «Хост SMTP не указан». Я вынул шланг из объявления и добавил Host = "myhost" и получил ту же ошибку. – ESDictor

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

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