17

ben EWS API kullanarak e-posta gönderme deneyin, aşağıdaki hatayı alıyorum:Exchange Web Service API ve 401 yetkisiz istisna

ExchangeService exchangeService = new ExchangeService(ExchangeVersion.Exchange2007_SP1); 

//WebService Uri 
try 
{ 
    exchangeService.Url = new Uri("https://exchangeserver/ews/exchange.asmx"); 
} 
catch (Exception ex) 
{ 
    throw new Exception(string.Format("WebService Uri:" + ex)); 
} 

//Credentials 
try 
{ 
    exchangeService.Credentials = new WebCredentials("[email protected]", "pwd", "domain"); 
} 
catch (Exception ex) 
{ 
    throw new Exception(string.Format("Credentials:" + ex)); 
} 

//Send a mail 
try 
{ 
    EmailMessage message = new EmailMessage(exchangeService); 
    message.Subject = "Test"; 
    message.Body = "Test"; 
    message.ToRecipients.Add("[email protected]"); 
    message.Save(); 
    message.Send(); 
} 
catch (Exception ex) 
{ 
    throw ex; 
} 
:

The request failed. The remote server returned an error: (401) Unauthorized.

Kodum şudur (message.Send(); cinsinden)

Bu sitedeki bu yazıyla ilgili diğer yazıları okudum ancak sorunumu çözemediler. Bu değişen

+1

Bu soruyu sorarak kariyerimi kurtardın! – Chookoos

+0

Benim zevkim :) !! – GwenGuts

+0

Daha önce EWS bağlantısının çalıştığı ve daha sonra çalışmadığı bir durumda, parolanın süresi dolmuş gibi basit bir şey olabilir ve değiştirilmesi gerekir. – RenniePet

cevap

29

Dene: bu işe

exchangeService.Credentials = new WebCredentials("[email protected]", "pwd", "domain"); 

:

exchangeService.Credentials = new WebCredentials("user", "pwd", "domain"); 

Bazen Girişi kimlik bilgileri yapılandırıldığı nasıl Exchange/Active Directory bağlıdır. Kullanıcı @ etki alanı veya etki alanı \ kullanıcı olabilir

+0

Merhaba, bahşiş için teşekkürler! Harika çalışıyor! Şimdi EWS Api ile e-posta gönderebilirim :). – GwenGuts

+0

Bizimki yerel olarak 'domain \ username' olarak çalıştı, ancak alan ve kullanıcı adını ayırmak zorunda kaldım. – jtimperley

+0

Basit ancak bu tür bir rehberlik olmadan bulmak için saatler sürecek, böylece bu cevap sahip olduklarından daha fazlasını hak ediyor. 24 saat içinde değiştirilecektir. ;) –

1

Aynı sorun için bir çözüm bulmak çok zaman aldı. Benim durumumda, IIS sitesi altında izin verilen URL'lerin listesi olan EWS Sanal Dizini'ne eklemem gerekiyordu. IIS yönetimine gidin, Varsayılan Web Sitesi altındaki EWS düğümüne tıklayın, ardından İstek Filtrelemeye çift tıklayın. URL sekmesine gidin ve sağ tarafta URL'ye İzin Ver'i tıklayın. Hizmeti çağırmak istediğiniz URL'leri girin, örn. Ayrıca, example.com/ews/ veya server.example.com/ews/

Ayrıca, benzer konularla ilgili olarak, tüm ana bilgisayarları (*) winrm güvenilen ana bilgisayarına eklemem gerekiyordu (varsayılan olarak yalnızca yerel IP'ye sahipti) listelenmiş).

HTH.

İlgili konular