当前位置: 首页 > 知识库问答 >
问题:

通过EWS API连接到Office 365

左丘凡
2023-03-14

我在控制台应用程序中使用EWS API来处理邮箱项目,我的连接脚本如下所示

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

但我发现我的电子邮件帐户已移动到Office 365云。我应该如何更改身份验证?

我找到EWS服务url

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

但我不知道如何使用它。

谢谢你

共有3个答案

董桐
2023-03-14

我知道这是一个相当古老的解决方案,但它仍然对我非常有帮助。我有一些工具适用于 Exchange 的“普通”网络版本,但到目前为止,我对 Exchange Online 的测试失败了(我收到诸如“找不到自动发现服务”等错误)。

这里的基本要求是使用Web凭据而不是Networks Cred 使用电子邮件地址而不是用户名。

韩英锐
2023-03-14

< s > EWS与office365的连接在安全性方面似乎有一些变化,导致马特的回答对我无效。

有效的方法如下:

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

重要提示:

>

  • 自动发现 URL 未成功完成,每次都无法发现 URL

    < code>user必须是用户的完整电子邮件地址。

    domain是NetBIOS域名,这意味着它只是域名。可以在 Microsoft 365 管理中心的“设置”下找到该域 -

    用户必须是Microsoft 365管理员

    其中一个参数的任何更改都会导致未授权异常。

    编辑

    Microsoft不再支持基本身份验证。请阅读这篇关于如何通过OAuth连接到EWS的文章。第一次尝试就成功了,没有任何问题。

  • 喻珂
    2023-03-14

    您可以使用下面的代码连接到 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;
    }
    
     类似资料:
    • 问题内容: 我将Redis To Go与https://github.com/mranney/node_redis库结合使用。Redis给了我一个看起来像的URL,但是我不知道如何使用它,因为它只占用了主机和端口。 问题答案: 我相信您拥有的网址的方案是: 。 我不相信被使用。提供了两种登录方法:和。自述文件中有详细信息,但以下是相关部分供参考: redis.createClient(端口,主机,

    • 问题内容: 我正在尝试通过网络连接到MySQL数据库。我已经安装了MySQL,并且该服务在默认端口上运行。我还将SQL连接器安装到jar文件中,并将Java JDK添加到服务器计算机中。我可以使用以下代码连接到本地数据库: 但是,当我尝试通过IP地址(例如:192.168.1.45)通过网络连接到它时: 我收到连接错误: 有人知道这个问题是什么吗?我需要添加其他地址吗?我已经使用地址添加了默认端口

    • 问题内容: 我已经在服务器上安装了Kibana 5.4和Elastic search 5.4,我可以通过使用本地计算机上的curl来访问Kibana和Elastic search 我得到以下回应 var hashRoute =’/ app / kibana’; var defaultRoute =’/ app / kibana’; var hash = window.location.hash;

    • 我已经在服务器上安装了Kibana 5.4和Elastic search 5.4,我可以使用 我得到以下回应 var hashRoute='/app/kibana'; var defaultRoute='/app/kibana'; var hash=window.location.hash; if(hash.length){window.location=hashRoute hash;}其他{wi

    • 问题内容: 我最近安装了Elasticsearch,并且在开始的几天里一切正常,但是今天以某种方式停止了工作 当我启动该服务时,它声称很好… 但后来我明白了 查看elasticsearch日志: 看起来有关于Java VM的警告;那可能是问题吗?我还应该尝试/看看什么? 问题答案: 1) 使用linux中的命令 检查端口9200的状态 。 就我而言,以下是启动时的结果。 对我不是服务,否则找到正在

    • 问题内容: 我想创建以下基础结构流: 使用Docker如何实现? 问题答案: 首先,您需要在要ssh- in的映像中安装SSH服务器。您可以对安装了ssh服务器的所有容器使用基础映像。然后,您只需要运行每个容器,即可将ssh端口(默认为22)映射到主机端口(镜像中的远程服务器)到一个端口。即: 然后,如果可以从外部访问主机的端口52022和53022,则可以使用主机的ip(远程服务器)通过ssh在

    • 问题内容: 我的django项目无法连接到postgres数据库容器。我该怎么办? 它在命令时崩溃。我知道docker run命令会创建一个新的容器,但是在docker-compose.yml中,bash包含了更多命令。它应该工作,不是吗? 我的: 我的: : 输出: 我使用:Windows 10 Docker 17.03.0-ce-win1-(10296)docker-compose版本1.11

    • 我试图通过API访问XML文档。当我尝试用python连接时,我得到一个403状态代码。但是,当我将链接粘贴到chrome浏览器中时,数据将按其应有的方式显示。我知道我可能需要在Python中为我的请求添加一些头,但我不知道如何这样做。 我可以在chrome中获取标题,但不确定需要添加哪些标题到请求中 接受:text/html、application/xhtml-xml、application/x