2015-09-02 24 views
13

Tôi đang sử dụng EWS API trong ứng dụng giao diện điều khiển của tôi để xử lý các mặt hàng hộp thư và kịch bản kết nối của tôi trông giống nhưKết nối với Office 365 của EWS API

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); 
service.UseDefaultCredentials = true; 
service.AutodiscoverUrl("[email protected]"); 

Nhưng tôi thấy rằng tài khoản email của tôi đã được chuyển đến Office 365 đám mây. Làm thế nào tôi nên thay đổi xác thực?

tôi tìm thấy EWS url dịch vụ

service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx"); 

nhưng tôi không biết làm thế nào để sử dụng nó.

Cảm ơn bạn

+0

Bạn rất có thể chỉ phải đặt thông tin đăng nhập của mình (tên người dùng/pw) trong 'service.Credentials'. – kat0r

+4

Tôi đã bỏ phiếu cho câu hỏi của bạn vì câu hỏi của bạn là câu trả lời cho câu hỏi của tôi. Trong trường hợp của tôi autodiscover đã không làm việc remotly chỉ tại chỗ, nhưng ngay sau khi tôi đặt service.Url = new Uri ("https://outlook.office365.com/EWS/Exchange.asmx"); thay vì autodiscover nó làm việc như một say mê Cảm ơn bạn rất nhiều lần nữa – Chris

+0

AutoDiscover là rất chậm, nhưng thiết lập URI làm việc tốt hơn nhiều – wruckie

Trả lời

9

Bạn có thể sử dụng mã dưới đây để kết nối với EWS trên văn phòng 365:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1); 

service.Credentials = new WebCredentials("[email protected]", "password"); 
service.AutodiscoverUrl("[email protected]", RedirectionUrlValidationCallback); 

Bạn cần xác định một chức năng gọi lại cho hàm AutodiscoveryUrl, như thế này:

private static bool RedirectionUrlValidationCallback(string redirectionUrl) 
{ 
    // The default for the validation callback is to reject the URL. 
    bool result = false; 

    Uri redirectionUri = new Uri(redirectionUrl); 

    // Validate the contents of the redirection URL. In this simple validation 
    // callback, the redirection URL is considered valid if it is using HTTPS 
    // to encrypt the authentication credentials. 
    if (redirectionUri.Scheme == "https") 
    { 
     result = true; 
    } 
    return result; 
} 
+0

Nó hoạt động, cảm ơn bạn! Nhưng bạn cũng biết cách sử dụng xác thực cửa sổ? bởi vì tôi không thể lưu trữ mật khẩu trong mã. Tôi tìm thấy bài viết này http://www.jeremythake.com/2014/08/using-the-exchange-online-ews-api-with-office-365-api-via-azure-ad/ nhưng tôi không biết cái gì là Biến ServiceResourceId. – Muflix

+1

@Muflix, nó là OAuth, không phải xác thực Windows. Vui lòng tham khảo bài viết này: https: //msdn.microsoft.com/en-us/library/office/dn626019 (v = exchg.150) .aspx # sectionSection1 – Matt

+1

để có thể chọn đúng phiên bản dịch vụ Exchange như (changeService (ExchangeVersion.Exchange2013_SP1)) bạn cần phải có phiên bản đúng của "Microsoft.Exchange.WebServices.dll". Điều này gây ra rất nhiều đau đầu cho tôi, tôi hy vọng nó sẽ giúp người khác. – Dung

Các vấn đề liên quan