- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
请耐心等待,我的 MAPI 知识很少,我的 C++ 技能也很初级......
我有一个程序,可以使用 MAPI 从 Exchange 服务器读取所有可能的日历约会。除了一种奇怪的情况外,一切都进展顺利。
如果定期约会有大量异常,那么我从 MAPI 获取的 RecurrenceState 属性似乎已被截断为 1200 字节。我可以在 OutlookSpy 中看到实际上有 1400 字节。 (奇怪的巧合,两个数字都是 100 的倍数?)
通过为 10 个特定属性(其中之一是 RecurrenceState)设置名为 SizedSPropTagArray 的东西,然后执行 QueryRows 操作来访问约会。当我访问该属性的 Value.bin.cb 字段时,它通常是正确的,但显然该特定属性包含 1200,而实际上它应该是 1400。
希望有人提出建议 - TIA。
编辑:
Dmitry,你说“在读取属性值之前,你是否检查类型是否仍然是 PT_BINARY?或者是否更改为 PT_ERROR?”
我不知道该怎么做。我正在执行 QueryRows 来一次最多获取 100 个约会。然后我循环遍历 LPSRowSet 来处理查询结果,即最多 100 个 SRow 对象。因此,为了处理 RecurrenceState,我使用 sRow.lpProps[columnIndex],它提供了一个 SPropValue。现在,这里似乎没有任何内容表明返回属性的类型。 .ulPropTag 字段正确包含 RecurrenceState 属性的 id,并且 .Value.bin.cb 提供长度,通常是正确的,但当数据很长时,它是一个较低的值。我应该测试什么来查看是否发生了您所描述的错误?谢谢。
编辑2:
Dmitry,我真的很感谢你的帮助,我相信你的基本想法一定是正确的。但不幸的是,当错误发生时,我没有对错误情况进行测试。
我现在已经能够在我们自己的 Exchange 服务器上重现这种情况,唯一的区别是,对于我们的 Exchange 服务器,RecurrenceState 数据的限制显然是 510 字节,而不是我们客户安装中看到的 1200 字节。
以下是在 Visual Studio 调试器下运行时程序中数据的一些复制粘贴捕获。第一个来自正常定期约会,其异常数据不会被截断:
sRow.lpProps[recurrenceInfoIndex].ulPropTag = 0x818b0102
sRow.lpProps[recurrenceInfoIndex].Value = {i=0x01da l=0x000001da ul=0x000001da ...}
下一个是有太多异常的约会,导致 RecurrenceState 数据被截断:
sRow.lpProps[recurrenceInfoIndex].ulPropTag = 0x818b0102
sRow.lpProps[recurrenceInfoIndex].Value = {i=0x01fe l=0x000001fe ul=0x000001fe ...}
请注意,.ulPropTag 与 OK 约会相同,数据长度为 0x1fe = 510,尽管我知道它实际上更多。
我想知道,我是否应该设置一些开关来表明我想要有关此类错误的反馈?
或者我还有其他误解吗?
谢谢。
最佳答案
MAPI 表会截断大字符串属性。根本不返回大型二进制属性。在读取属性值之前,是否检查类型是否仍然是 PT_BINARY?或者它会更改为 PT_ERROR 吗?要打开大型二进制属性,需要打开相应的 IMessage,并将属性打开为 IStream (IMessage::OpenProperty)。
关于使用 QueryRows 访问时 MAPI 属性被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6455517/
我正在尝试通过 Access 数据库(SendObject VB 代码)向人们发送报告。在我们去年 11 月推出 Microsoft Outlook 2010 之前,它一直是成功的。 升级后,我们不能
我正在使用 Windows Search API,它返回 mapi URL。 如何找到包含 URL 数据的文件?例如。该消息来自的 PST 文件的路径? 我如何以编程方式获取 MAPI 消息的内容或数
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 6年前关闭。 Improve this questi
如何找到 Microsoft Exchange Server 的 MAPI 帐户的服务器名称?谢谢! 最佳答案 在 Outlook 2010 下,阅读 PR_EMSMDB_SECTION_UID 属性
有一个没有邮件客户端的 Windows Server 2008 R2,也没有安装任何邮件客户端到此服务器的选项。 我编写了一个服务,它使用简单的 MAPI 从交换服务器获取电子邮件。 已安装 Exch
我希望我的程序通过传递 MapiMessage 来在用户最喜欢的电子邮件客户端中撰写外发电子邮件。至 MAPISendMail .电子邮件的元素(例如主题)可作为不可变字符串(例如 const cha
我有一个函数可以通过 MAPI 启动用户的默认电子邮件程序。邮件程序通常在我的应用程序之上启动,但有时不会;有时我的应用程序会保留在桌面显示的顶部。有什么方法可以确保用户的电子邮件程序会在桌面上启动,
我正在使用this method从 Delphi 应用程序内部发送带有 PDF 附件的 MAPI 电子邮件。 它会打开一个 MS Outlook“新消息”窗口,其中已附加 pdf 文档和一个空白收件人
我可以从哪里下载 MAPI33.dll。我得到了链接 http://www.mapi33.adexsolutions.com/从一个网站,但似乎这是不正确的。 最佳答案 您可以在此处找到旧版本: ht
过去我用过profman2当我不想在服务器上安装 Outlook 时,为需要访问 Exchange 邮箱的服务器创建 MAPI 配置文件。当我能够以需要访问配置文件的用户身份登录时,这可以正常工作。当
我想连接到我的企业邮件服务器..但我似乎只能使用 MAPI 协议(protocol)。我如何使用 Java MAPI API 建立到我的企业邮件服务器的连接 最佳答案 不幸的是,简短的回答是:你不能。
我正在使用 C++ 中的 MAPI 库发送电子邮件。现在,我需要将我发送的电子邮件的回复设置为多封电子邮件,而我只能对一封电子邮件进行回复。 我一直在阅读,为了能够做到这一点,我需要使用对象 FLAT
我正在尝试使用扩展 MAPI 发送消息,但一直收到 E_ACCESSDENIED 错误。我正在使用调用 cpp dll 的 C# 类。我可以查看邮件和删除邮件,但不能发送。下面是我用来创建消息的 C#
我正在使用的系统包含一个地址簿。我正在寻找通过 MAPI 将地址与当前用户地址簿同步的示例代码。我需要双向同步。 如果您知道任何具有易于使用的功能的开源库,我将很高兴听到。如果您知道一个非开源库,那也
我正在使用 MapiEx(http://www.codeproject.com/Articles/10881/MAPIEx-Extended-MAPI-Wrapper) 生成邮件。 我需要在 MAPI
AFAIK,消息正文存储在以下任一属性中 - PR_RTF_COMPRESSED 或 PR_BODY 或 PR_BODY_HTML 但在我的系统上,当我通过 outlook spy 查看时 - 我在
我需要访问 Windows 用户的私有(private)地址簿。 我正在开发的软件使用的是 C++,无法使用其他任何软件。 我解决了所有问题,除了如何访问与联系人一起存储在 Outlook(或任何其他
我有一个来自第三方库的 MAPI IMessage 对象,我需要解密消息(假设它是 smime),生成另一个解密的 MAPI 对象(或覆盖现有对象)。请推荐一种方法。 一种方法是使用 IConvert
我给自己编写了一个程序来创建邮件。 首先我得到一个带有地址的字符串 vector 。现在,当我尝试使用我无法编译的 Vector 的大小初始化 RecipDesc 时,因为它在等待一个常量。 这里是一
我想通过以下方式登录到我的默认邮件收件箱: MAPILogonEx(0, profileName, NULL, MAPI_LOGON_UI, &lpMAPISession) 我将 profileNam
我是一名优秀的程序员,十分优秀!