簡體   English   中英

通過 EWS API 連接到 Office 365

[英]Connection to Office 365 by EWS API

我在控制台應用程序中使用 EWS API 來處理郵箱項目,我的連接腳本看起來像

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.UseDefaultCredentials = true;
service.AutodiscoverUrl("emailService@domain.com");

但我發現我的電子郵件帳戶已移至 Office 365 雲。 我應該如何更改身份驗證?

我找到了 EWS 服務網址

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

但我不知道如何使用它。

謝謝

您可以使用以下代碼連接到 Office 365 上的 EWS:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);

service.Credentials = new WebCredentials("emailService@domain.com", "password");
service.AutodiscoverUrl("emailService@domain.com", RedirectionUrlValidationCallback);

您需要為 AutodiscoveryUrl 函數定義一個回調函數,如下所示:

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;
}

我知道這是一個相當古老的解決方案,但它對我仍然非常有幫助。 我有一些工具可以與 Exchange 的“普通”網絡版本一起使用,但到目前為止,我對 Exchange Online 的測試失敗了(我遇到了“無法找到自動發現服務”等錯誤)。

此處必不可少的是使用 WebCredentials 而不是 NetworkCredential 和電子郵件地址而不是用戶名。

現在無法在 EWS 應用程序中使用基本身份驗證(用戶名和密碼)連接到 Office/Microsoft 365。 Microsoft 不再支持 EWS for Exchange Online 中的基本身份驗證。 建議您使用 OAuth2.0 獲取令牌並在 EWS 客戶端中使用相同的令牌連接到 Office 365。

為此,您必須在 Azure AD 中注冊您的應用程序才能使用客戶端憑據流。 我使用控制台應用程序對此進行了 POC。 在此處輸入圖片說明

在此處輸入圖片說明

這是指向GitHub存儲庫的源代碼和文檔的鏈接。

在安全方面,EWS 與 office365 的連接似乎發生了一些變化,導致 Matt 的回答對我不起作用。

做了什么工作如下:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1)
{
     Credentials = new WebCredentials("user", "password", "domain"),
     Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx")
};

進口注意事項:

  • AutodiscoverUrl沒有成功完成,每次都發現url失敗

  • user必須是user完整電子郵件地址

  • domainNetBIOS 域名,意思是它只是域名。 您可以在 Microsoft 365 管理中心的Settings -> Domains下找到該域。 最簡單的方法是以domain.onmicrosoft.com的形式查找回退域。 只取domain部分。

  • 用戶必須是 Microsoft 365 管理員

  • 這些參數之一的任何更改都會導致Unauthorized例外。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM