以 GIF 格式保存 Outlook 中的嵌入图像
Posted
技术标签:
【中文标题】以 GIF 格式保存 Outlook 中的嵌入图像【英文标题】:Save embedded images from outlook in GIF format 【发布时间】:2017-05-26 10:34:49 【问题描述】:我正在尝试使用 Windows 服务中的 Outlook 对象从收件箱中读取邮件,然后提取嵌入的图像。但是邮件中可以嵌入任何类型的图像。 Outlook API中有什么简单的方法可以保存所有嵌入的GIF格式吗?
if (newEmail.Attachments.Count > 0)
for (int i = 1; i <= newEmail
.Attachments.Count; i++)
string value = newEmail.Attachments[i].PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001E");
if (!String.IsNullOrEmpty(value))
newEmail.Attachments[i].SaveAsFile
(@"C:\TestFileSave\" +
newEmail.Attachments[i].FileName);
【问题讨论】:
不,您必须对地雷类型使用二进制检测来确认附件是图像,然后将其保存为 gif。想要的功能是什么?只有图片? @JeremyThompson 是的,我想保存所有嵌入的文件。我认为在大多数情况下,用户会嵌入屏幕截图等图像。一般来说,还有哪些其他文件可以嵌入到邮件中(除了图像)? 在 RTF 模式下,您可以放置文件,afaik 虽然它们将是附件(抱歉,我记不起上次检查的时间),我也没有看到嵌入的视频或音频剪辑。 请问使用模式的 GetProperty 实现了什么?只是检查嵌入的图像?顺便说一句,这是 Mime 类型检查器代码:***.com/q/15300567/495455 是的。该 GetProperty 用于检查附件是嵌入的还是附加的。 【参考方案1】:您不能在服务中使用 Outlook 对象模型。为什么不创建一个 COM 插件。
您还在检查 PR_ATTACH_CONTENT_ID 属性是否存在。请记住,可以在任何附件上设置 Content-ID MIME 标头,它不一定是图像,您需要检查 html 正文。
【讨论】:
所以我无法将 Microsoft.Office.Interop.Outlook.dll 与 Windows 服务一起使用?如果不可能,那么解决方案是什么? 您的选项是扩展 MAPI(C++ 或 Delphi)、赎回(它包装了扩展 MAPI 并可从任何语言使用)或 EWS(如果是 Exchange 邮箱)。 interop Outlook 也不起作用,或者只是出于安全考虑,不应在 Windows 服务中使用它。我尝试在我的一台机器上的 Windows 服务中使用它并且它有效!但是在另一台服务器上,当我尝试获取 mailitem.SenderEmailAddress 时,远程过程调用失败。在这两种情况下,Windows 服务都将登录用户设置为具有 Outlook 连接的用户。那么这两种情况背后的原因是什么? 它不起作用 - 它只是被设计为可以显示提示的最终用户应用程序。 但它在我的机器上作为 Windows 服务工作。它能够获取邮件属性和附件。以上是关于以 GIF 格式保存 Outlook 中的嵌入图像的主要内容,如果未能解决你的问题,请参考以下文章
在 html 中嵌入图像以自动发送 Outlook365 电子邮件
如何使用 Outlook 2010(无 smtp)和 python 发送带有嵌入图像(不是附件)的 HTML 格式电子邮件