【问题标题】:Deleting Inline Images from Outlook从 Outlook 中删除内联图像
【发布时间】:2015-09-09 20:17:47
【问题描述】:

要求是从 Outlook 电子邮件中删除附件。代码如下:

internal void ClearAttachments()
    {
        Outlook.MailItem mailItem = Globals.ThisAddin.Application.ActiveInspector().CurrentItem as MailItem;
        try
        {
            if (mailItem != null && mailItem.Attachments.Count >= 1 )
            {
                for (int i = mailItem.Attachments.Count; i >= 1; i--)
                {
                    mailItem.Attachments[i].Delete();
                    mailItem.Attachments.Remove(i);
                }
            }
        }
        catch (Exception e)
        {
            //log this if needed.
        }

对于除“内联图像”以外的大多数常用文件,它都可以正常工作(例如 txt)在这种情况下,当删除图像时,Outlook 仍会显示一个矩形块(某种容器)。

【问题讨论】:

  • 附件在 HTML 标记中是如何表示的?它们是使用 cid: 属性还是 64 位编码引用的?
  • mailItem.HTMLBody 属性建议如下:

  • 您需要获取相应的附加图像文件,其中 PR_ATTACH_CONTENT_ID ("schemas.microsoft.com/mapi/proptag/0x3712001E") 设置为 image001.png@01D0EAE4.A98A98A0,如 HTML 标记所示。

标签: c# outlook outlook-addin


【解决方案1】:

矩形块由 HTML 正文显示,现在引用不再存在的图像。您还需要适当地更新 MailItem.HTMLBody 属性。

【讨论】:

  • 感谢您的快速回复,但是当有内嵌图像时,mailItem.Attachments 不会反映它们。如果我有 3 个内联图像,则 mailItem.Attachments.Count 仍为 0。
  • 如果图像是由远程 url 而不是 cid 属性引用的,附件集合当然不会有它们 - 它们只存在于远程服务器上。您将需要处理 HTMLBody 属性并删除不需要的 img 标签。
猜你喜欢
  • 2017-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-26
  • 2012-01-28
  • 1970-01-01
  • 2015-06-06
  • 2015-11-21
相关资源
最近更新 更多