我们的应用程序的 32 位版本无法在MAPISendMail安装了 64 位 Outlook 的情况下发送电子邮件。它返回一个错误 0x80004005,除了它似乎是 MAPI 初始化错误之外,我几乎找不到关于它的信息。
根据此 MSDN 文档,这MAPISendMail是 32 位应用程序不能使用 64 位 MAPI 规则的一个例外。然而它不起作用(至少在 XP 和 Vista 中——我们还没有测试过 Win7/8)。
任何人都可以对此有所了解吗?
TIA
我在 MFC 应用程序中使用MAPISendMail(),但遇到一个问题:Webmail 客户端有时会收到 winmail.dat 附件,而不是“真实”附件。
我研究了很多,发现其他人也遇到这个问题,但没有找到解决方案。
我相信问题可能出在我的MapiFileDesc结构中,其中我将 lpFileType 成员保留为 NULL,以便让邮件程序(在我的例子中为 Outlook 2010)自动确定文件类型。 lpFiletype是一个MapiFileTagExt结构,文档是这样说的: NULL值表示未知的文件类型或由操作系统确定的文件类型。
所以我相信这应该适用于常见类型,例如 JPEG 或 GIF 等。
我读到 winmail.dat 是由 Outlook 发送使用ms-tnef编码编码的邮件引起的,该编码是 Microsoft 专有的。但是,发送电子邮件时,Outlook 将“HTML”显示为突出显示,而不是 RTF。
有谁遇到过这个问题并妥善解决了吗?
通过 SMTP 等发送不是一种选择,因为用户应该在其“已发送邮件”文件夹中拥有邮件的副本。使用 Outlook 对象模型不是一个选项,因为这需要用户安装 Outlook,而不是任何 MAPI 兼容客户端。