【问题标题】:Save embedded images from outlook in GIF format以 GIF 格式保存 Outlook 中的嵌入图像
【发布时间】:2023-03-27 21:30:01
【问题描述】:

我正在尝试使用 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 类型检查器代码:stackoverflow.com/q/15300567/495455
  • 是的。该 GetProperty 用于检查附件是嵌入的还是附加的。

标签: c# email outlook


【解决方案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 服务工作。它能够获取邮件属性和附件。
猜你喜欢
  • 2016-10-30
  • 2015-07-31
  • 2010-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-28
相关资源
最近更新 更多