问题标签 [exchangewebservices]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2435 浏览

c# - 如何使用 EWS 循环浏览 Exchange 中的邮件?

我的任务是获取 Exchange 2007 服务器中最大邮件的列表。

由于我以前从未针对 Exchange 进行过编码,因此我环顾四周,发现 EWS 是执行此操作的最新接口。

但是,我找不到任何有关循环邮件的文档,我希望有必要检查邮件的大小。

有没有人有代码示例、链接或几乎任何东西,可以帮助我完成这个?

0 投票
3 回答
15075 浏览

exchange-server - 使用 EWS 托管 API 为其他用户创建约会?

在 EWS 托管 API 中,为特定用户创建约会很容易:

这将为管理员创建一个约会。但是假设我想实际为另一个用户创建约会(而不是将该用户作为与会者添加到我的约会中)。这可能通过 EWS 托管 API 实现吗?

0 投票
1 回答
50022 浏览

c# - Exchange Web 服务 2010 入门

我的任务是在 .Net 中编写一个 SOAP Web 服务,作为 EWS2010 和以前使用 WebDAV 连接到 Exchange 的应用程序服务器之间的中间件。(据我了解,WebDAV 将随着 EWS2010 消失,因此应用程序服务器将不再能够像以前那样连接,并且在没有 WebDAV 的情况下连接到 EWS 的难度呈指数级增长。理论上是在 .Net 中进行应该比其他任何事情都容易......对吧?!

我的最终目标是能够获取创建/更新指定 Exchange 帐户的电子邮件、日历项目、联系人和待办事项列表项目。(目前不需要删除,但如果足够简单,我可能会将其构建以供将来考虑)。

我最初得到了一些示例代码,它们确实有效,但我很快意识到它已经过时了。当前文档中没有出现使用的类型和类。

例如,用于创建与 Exchange 服务器的连接的方法是:

对于它的价值,这是使用示例代码附带的程序集:(Microsoft.Exchange.WebServices.dll“MEWS”)。

在我意识到这不是当前完成连接的标准方法并且它起作用之前,我尝试在它的基础上构建并添加一个方法来创建日历项目,我从这里复制了它:

马上,我就遇到了ExchangeServiceand ExchangeServiceBinding("ESB");之间的区别。所以我开始谷歌搜索,试图找出如何获得 ESB 定义,以便CreateAppointment编译该方法。我发现这篇博客文章解释了如何从 WSDL 生成代理类,我这样做了。

不幸的是,这导致了一些冲突,其中在原始程序集中定义的类型Microsoft.Exchange.WebServices.dll(示例代码附带)与我的新程序集中的类型(我从Exchange 服务器提供EWS.dll的代码生成的代码编译)重叠。services.wsdl

我排除了 MEWS 组件,这只会让事情变得更糟。我从少数错误和警告变成了 25 个错误和 2,510 个警告。各种类型和方法都没有找到。明显有问题,这里。

于是我又回去打猎了。我找到了关于添加服务引用和网络引用的说明(即它在 VS2008 中采取的额外步骤),我认为我回到了正确的轨道上。

我删除了(实际上,现在只是排除了)我一直在尝试的所有以前的程序集;我添加了一个服务参考https://my.exchange-server.com/ews/services.wsdl

现在我只剩下 1 个错误和 1 个警告。

警告:
元素“transport”不能包含子元素“extendedProtectionPolicy”,因为父元素的内容模型为空。

这是指我添加服务引用时对 web.config 所做的更改;我刚刚在 SO 上找到了解决方法。我已经按照指示评论了该部分,并且确实使警告消失了,因此请为此努力。

不过,这个错误并不是那么容易解决的:

错误:
找不到类型或命名空间名称“ExchangeService”(是否缺少 using 指令或程序集引用?)

这是参考我用来创建 EWS 连接的函数,由每个 Web 方法调用:

此函数与示例代码中的 MEWS 程序集完美配合,但该ExchangeService类型不再可用。(也不是ExchangeServiceBinding,这是我检查的第一件事。)

在这一点上,由于我没有遵循文档中的任何指示(我在文档中找不到任何地方说要向 Exchange 服务器的 services.wsdl 添加服务引用——但这似乎是最好的/到目前为止我得到的最远距离),我觉得我在飞盲。

我知道我需要弄清楚应该替换ExchangeService/的东西ExchangeServiceBinding,实现它,然后解决由于该切换而出现的任何错误......

但我不知道如何做到这一点,或者在哪里寻找如何做到这一点。谷歌搜索“ExchangeService”和“ExchangeServiceBinding”似乎只会导致回到过时的博客文章和 MSDN,到目前为止,它们都没有被证明非常有用。

我应该用什么替换ExchangeService/ ExchangeServiceBinding?是否有其他位置可以记录与 EWS 一起使用的文档比 MSDN 更好?

0 投票
3 回答
6352 浏览

c# - 无法访问公共文件夹根目录

我最近使用 C# 编写了一个 .NET 控制台应用程序。其目的是读取特定文件夹中的电子邮件,解析它们以获得特定值并将它们保存到数据库中。

在我最初编写此代码时,我们的电子邮件系统是 Exchange 2003。但是,我知道我们很快就会升级到 Exchange 2010:因此,我构建的代码可以在这两种环境中工作。

但是,在迁移到 Exchange 2010 之后,该应用程序已损坏。

该应用程序将 EWS API 用于 2010 功能。当它尝试使用 ExchangeService 的 FindFolders 方法来查找 publicfoldersroot 时,它会引发异常。这是代码:

例外:ErrorInvalidSchemaVersionForMailboxVersion,又名:

请求的邮箱不支持指定的 RequestServerVersion

我尝试过:

  • 将 exchangeservice 设置为 2007(抛出异常:“发生内部服务器错误。操作失败。”)

  • 授予自己对公用文件夹的最高级别权限(无效)

  • 手动设置我的凭据(无效)

我可以在 Outlook 2007 中查看公用文件夹;publicfoldersroot 属性在智能感知中可用;该代码适用于本地文件夹(我可以解析我的收件箱)。

我目前的想法是它是最近设置的 Exchange 2010 的设置:不幸的是,这不是我真正的领域。异常告诉我它正在尝试使用以前版本的 Exchange。将其设置为 2007 只会导致代码因内部服务器错误而失败。

0 投票
3 回答
10417 浏览

c# - Folder.Bind - “Id 格式错误” - Exchange Web 服务托管 API

我正在将通过查询字符串Folder.Id.UniqueId从查询中检索到的文件夹的属性传递到另一个页面。FindFolders在第二页上,我想用它UniqueId来绑定到文件夹以列出其邮件项目:

当我运行此代码时,它会抛出一个异常,告诉我 Id 格式错误。我想也许它需要被包裹在一个FolderId对象中:

同样的问题。

我一直在寻找一段时间,并找到了一些关于 Base64/UTF8 转换的建议,但同样没有解决问题。

任何人都知道如何绑定到具有给定唯一 ID 的文件夹?

0 投票
3 回答
6355 浏览

c# - EWS - 如何在日期之间搜索项目 [消息]?

我正在尝试从收件箱文件夹中搜索两个日期之间的邮件项目。我使用以下限制类型,但它会引发此错误:

Firmt.RootFolder = null

我究竟做错了什么?

在提及的日期之间有一些消息;-)

感谢您的建议。

0 投票
1 回答
247 浏览

windows-authentication - 为什么基于 iPhone 和 WinCE 的智能手机邮件仍然可以与 Exchange 一起使用?

我们有一个使用 Exchange Web 服务下载邮件和日历信息的设备。它使用 Active Directory 凭据通过 Exchange 对自身进行身份验证。设备存储用户 ID 和密码。当用户从他的 PC 更改密码时(因为 IT 强制密码过期),设备邮件将停止工作,直到设备上的密码也被更改。在对此进行调查时,我们发现基于 Windows CE 的智能手机和 iPhone 在其 Exchange 密码不同步时不会提示输入密码。他们仍然工作。

这怎么可能?是否有一些特殊的 Exchange 配置可以让它工作?对我来说,这看起来像是一个安全漏洞。

0 投票
2 回答
6748 浏览

c# - 如何使用 Exchange Web Services 2010 托管 API 获取文件夹大小?

我正在尝试使用 EWS 2010 托管 API 来获取用户邮箱的总大小。我还没有找到获取这些数据的网络服务方法,所以我想我会尝试计算它。我在另一个网站上发现了一个关于使用 EWS 2007 查找邮箱大小的看似适用的问题,但要么我不明白它要求我做什么,要么该方法不适用于 EWS 2010。

在代码洞察中闲逛,我能够编写我认为的方法,该方法将递归遍历文件夹结构并导致收件箱内所有文件夹的总和:

(假设给定文件夹中的文件夹不超过 10,000 个。图这是一个安全的赌注......)

不幸的是,这不起作用。

我正在使用以下代码启动递归:

但是会抛出一个空引用异常,本质上说这[folder].ManagedFolderInformation是一个空对象引用。

为清楚起见,我还尝试获取根文件夹的大小:

这引发了相同的 NRE 异常,所以我知道,一旦您在目录树中达到一定深度,ManagedFolderInformation 不存在。

关于如何获取用户邮箱总大小的任何想法?我在吠叫错误的树吗?

0 投票
2 回答
4570 浏览

.net - 如何绕过 WCF 中的 TLS/SSL 认证验证以进行 Exchange Web 服务

我不想绕过 SSL 并使用常规 http 协议连接到 Exchange 2007 服务器,但是我们不想投资真正的 SSL 证书,而我们使用的证书是黑莓企业服务器所需要的。有没有办法绕过这里是例外

请求失败。基础连接已关闭:无法为 SSL/TLS 安全通道建立信任关系。

你如何让 ExchangeService 接受错误的 ssl。

0 投票
2 回答
1165 浏览

c# - 如何从 C# Web 应用程序以编程方式在 Exchange 2007 服务器上添加邮箱别名?

正如主题所说,我有一个与 Exchange 2007 服务器通信的 C# Web 应用程序 (.NET 3.5)。我需要帮助的是以编程方式(最好是从 Web 应用程序本身)将新邮箱别名添加到某个邮箱,然后在发送邮件之前将新别名设置为回复地址。

我对脚本编写相当陌生,但从我目前所读到的内容来看,大多数人似乎都建议使用 Exchange Powershell 来完成此任务。任何有关解决此问题的第三方 API 的提示都将不胜感激。我查看了 EWS API,但从我目前看到的情况来看,这看起来并不是我想要的。