使用 MAPI 和 Outlook 发送 HTML 邮件时出现问题

Posted

技术标签:

【中文标题】使用 MAPI 和 Outlook 发送 HTML 邮件时出现问题【英文标题】:Problem sending HTML Mails using MAPI and Outlook 【发布时间】:2011-03-22 23:12:22 【问题描述】:

我正在尝试在我的 Delphi 应用程序中使用 MAPI 调用发送 html 电子邮件。 当客户端是 Thunderbird 时,如果工作正常。但是当客户端是 Microsoft Outlook 或 Outlook Express 时,我需要将 HTML 代码保存在一个文件中,并将其作为邮件的第一个附件发送,邮件客户端在其他地方将 HTML 解释为文本,显示标签。 仅当不再发送附件时,将 HTML 作为第一个附件发送才有效,因为如果我发送一个或多个附件,第一个 (HTML) 也会显示为附件。

有人可以帮助我吗?

提前致谢。

道格拉斯。

留言OK:Ok http://www.freeimagehosting.net/uploads/e51dfa52f4.jpg

错误消息(带一个附件):Bad http://www.freeimagehosting.net/uploads/7e5689e2b9.jpg

【问题讨论】:

当用户电子邮件客户端是 Microsoft Outlook 时,我使用 OLE 集成解决了这个问题。如果是 Outlook Express,我会删除格式并以纯文本形式发送消息。 【参考方案1】:

如果您发现 Outlook/OutlookExpress 无法原生处理 HTML,则可能只是因为您使用的 Outlook 版本无法处理,或者默认情况下未配置为默认处理 HTML 富内容。您是否尝试过重新配置 Outlook/OutlookExpress 选项以默认选择 HTML 富文本?

看起来它确实在工作,但 Outlook 无法正确显示内容。通过传统电子邮件客户端发送的 HTML 电子邮件实际上是经过 mime 编码的,正如它在此处显示的那样。换句话说,您可能会发现如果发送了电子邮件,它在另一侧看起来很好,这只是 Outlook-express 中的一个错误,您在窗口中看不到 MIME 附加内容,而是看到它真正在内部完成,作为 MIME 编码的附件。

【讨论】:

是的,当消息发送时,它会在收件人客户端中正确显示。但是我通过 Outlook Express(而不是直接从我的应用程序)发送它只是为了让用户能够编辑消息,然后我需要正确显示消息。

以上是关于使用 MAPI 和 Outlook 发送 HTML 邮件时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

Outlook MAPI - 无法从属性 PR_RECIPIENT_TRACKSTATUS_DELIVERY 检索数据

通过 MAPI 使用 Python 从 Outlook 读取电子邮件

MAPI协议

Outlook 2016 mapi.MAPIUninitialize() 崩溃

Outlook.MailItem.EntryID 和 Mapi32.dll MessageID 之间的区别

使用C#模拟Outlook发送邮件,代码编译报错