问题标签 [mapi]

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 回答
103 浏览

login - MAPI 在本地工作,但不在生产计算机上

我只是无法让 MAPI 在我们的生产机器上工作。我已经在这台机器上创建了一个使用 MAPI 和站点的应用程序,但由于某种原因,我可以让我的新应用程序工作。我不知道我做错了什么。

在本地,我创建了一个使用 MAPI 登录到邮件配置文件并检索消息的应用程序。消息被解析并移动到 2 个不同的文件夹,一个用于错误,一个用于竞争消息。这一切都在我的电脑上完美运行,但无法登录生产。

我知道这不是权限问题,因为我使用的配置文件/密码与我之前的应用程序使用的相同。我认为这可能与我计算机上的 CDO 或 MAPI 版本与生产中的版本有关,但我不确定。

如果某些版本不适用于不同版本的 Windows 等,是否有人知道我应该使用哪些 CDO/MAPI 版本?

0 投票
1 回答
766 浏览

email - 0x80040115 when trying to retrieve PR_DISPLAY_NAME

My native raw C++ program uses MAPI to traverse the tree in the Exchange Server.

Sometimes when I call HrGetOneProp() on a IMAPIFolder* pointer to retrieve PR_DISPLAY_NAME it fails with HRESULT 0x80040115. It only happens for one particular folder, all other folders names are retrieved allright.

Outlook 2003 running on the same machine under the same user displays all folders, problematic one included.

What is the cause of the problem and how do I resolve it?

0 投票
1 回答
3808 浏览

c# - MAPI 查找联系人和日历文件夹

在我的前景中,我有 1 个交换连接和 2 个个人文件夹。

我想从日历和联系人中获取所有项目,所以我使用:

但这并不 oFolder.Folders[5] 适用于日历并不总是 5,有时它是不同的值。

我无法按名称找到这些项目, oFolder.Folders["Calendar"]; 因为在荷兰语中,该文件夹将被命名为“议程”。

通常我使用: Outlook.MAPIFolder oCalendar = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar);

但后来我只得到默认日历。如何获取其他日历?

0 投票
1 回答
749 浏览

c# - Outlook MAPI 存储提供程序。管理?

是否可以创建 MANAGED (.NET) Outlook MAPI 存储提供程序?如何?

我是 Outlook 世界的新手,但不会摆弄所有的 COM 粪便。

0 投票
2 回答
927 浏览

windows - 如何使用 MAPI 分离内联图像和附件?

我的程序使用 MAPI 处理 Exchange 邮箱。问题是如果用户启动 Outlook,将文件添加为附件并打开 Paint,在那里选择一个区域,将其复制到剪贴板并粘贴到邮件正文中,则生成的邮件显示两个附件。

更具体地说,程序调用IMAPIMessage::GetAttachmentsTable()以检索附件表并且该表包含两个对象。程序是否可以确定“附件”是否真的是附件或内联内容的一部分?

0 投票
1 回答
604 浏览

c# - 使用 C# 通过 MAPI 在 MS Exchange Server 上存储电子邮件签名?

有没有办法通过 MAPI 使用 C# 以编程方式将电子邮件签名存储在 MS Exchange Server 上?

0 投票
3 回答
4690 浏览

delphi - 在delphi中发送带有rtf文本的电子邮件

我想执行以下任务:将 TRichEdit 内容(rtf 文本)转换为非纯文本电子邮件正文。

MAPI 不支持 rtf,但有没有办法用 Indy 做到这一点?

问题是 rtf 是 rtf 而电子邮件是纯文本或 HTML。

有人可以建议一个技巧吗?是否可以使用 TWebBrowser 将 rtf 转换为文本?

基本上情况是:
1)用户以delphi形式编写电子邮件,
2)然后使用MAPI将电子邮件发送到默认邮件客户端(因此会生成一个新的电子邮件窗口,并且消息正文与我在delphi形式中的相同) )
3) 用户从邮件客户端发送邮件

无论如何,MAPI 只接受纯文本。

更新:

尝试使用 Indy 我写了这个,但它仍然不起作用,当我将它发送到我的 gmail 帐户时,我收到了一条带有空正文和 NONAME 假附件的消息。

0 投票
1 回答
1852 浏览

exchange-server - Exchange Web 服务(托管 API)与 WebDav 性能问题

我是 Exchange (2007) 开发的新手,所以请多多包涵。:-)。似乎有无数种用于 Exchange 开发的技术——最新的是 Exchange Web 服务——以及相关的托管 API。我需要编写一个程序,如果有必要,可以在 Exchange 服务器上运行,以扫描人们的邮箱,以清除满足各种标准(与本次讨论无关)的邮件。

据我了解,对于 Exchange 2007 和 Exchange 2010,大多数其他技术(WebDav、MAPI、CDO)现在已被弃用。因此,由于这是一个全新的应用程序,我决定使用 Exchange Web 服务托管 API。

我担心每小时可以扫描的项目数量。由于它是基于 Web 服务的,因此涉及到网络跃点。所以我想在与之通信的服务器上运行这个实用程序。 我必须与“集线器”服务器交谈是否正确?. 我正在使用自动发现,无论哪个邮件服务器包含我正在扫描的实际邮件存储,它似乎都解析为“集线器”服务器。

当下拉多个项目时——使用 ExchangeService.FindItems 并指定页面大小为 500——我从我的工作站到集线器服务器的吞吐量非常好。我能够在 47 秒内检索 22,000 封邮件。这似乎是合理的。 然而,事实证明,当以这种方式检索时,并非所有属性都是“绑定”的。某些属性——比如 ToRecipients 和 CcReipients——没有填写。你必须显式绑定它们(单独)——通过调用

这是到服务器的单独往返,这会将吞吐量从大约 460 项/秒降低到 3 项/秒——这是不可行的。

所以 - 其他几个问题。有没有办法在调用 FindItems 期间强制绑定缺少的属性?如果做不到这一点,有没有办法一次绑定多个项目?

最后,对于这类工作,我选择 Exchange Web Services 是否正确。我喜欢编程模型的简单性,如果 (a) 更复杂或 (b) 已弃用,我不想转向另一种技术。如果另一种技术能更好地完成这项工作,并且没有被弃用,那么我会在必要时考虑使用它。感谢您的意见和建议。

0 投票
2 回答
599 浏览

outlook - 如何检测 Outlook 是否默认对电子邮件进行数字签名?

背景:我正在开发一个 Outlook 插件,它将附件添加到传出的电子邮件中。所有版本的 Outlook 都需要支持。

使用数字签名对 MailItem 进行签名后,向该 mailItem 添加附件通常会失败,除非您保存该邮件项目。这会从 mailitem 中删除签名。对我来说,这在某种程度上是预期的行为。这里没有什么奇怪的。

问题是当用户打开数字签名(无论是通过 UI 还是作为 Outlook 默认行为)然后再次将其关闭时。MailItem 不再签名,但它仍然表现得好像是 - 我们无法向此电子邮件添加附件。

我找到了一个可以解释原因的新闻组帖子;通过 Outlook API 检索到的对象似乎不是实际对象。

http://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.messaging/2006-02/msg00000.html

目前,我已经放弃尝试很好地解决这个问题。将 MailItem 保存到临时文件似乎可以解决此问题,但是出于性能原因,我们只想在 MailItem 从已签名转换为未签名时保存。另一种可接受的替代方法是检测是否默认启用了数字签名。虽然有一个与数字签名的默认设置相关的注册表项,但这只是一个建议,并不能准确反映电子邮件是否会默认签名。

有任何想法吗?

0 投票
1 回答
1522 浏览

delphi - 使用扩展的 mapi 函数将图像嵌入到 Outlook

我需要在电子邮件中嵌入图像并在将电子邮件发送到 Outlook 之前预览电子邮件。CDO 和赎回不是一种选择。

我尝试了以下代码,但图像只是显示为一个小块。