在邮件中包括来自网站的图像.HTMLBody.

本文关键字:网站 图像 HTMLBody 包括 | 更新日期: 2023-09-27 18:33:27

我目前正在为Microsoft Outlook开发一个加载项,该加载项在html正文的标记之前添加图像。 此映像位于远程服务器上,因此映像标记的来源http://someserver.com/image.jpg

这在一封新电子邮件(又名新电子邮件)上完全符合预期但是,当用户单击回复或由于某种原因转发时,图像源将更改为cid:image001.jpg并且实际的图像源将放在alt标记中。

我正在更改发送事件的正文,因为我希望在电子邮件写入完成后添加图像。

在发送事件中运行的代码

void OutlookApplication_ItemSend(object Item, ref bool Cancel)
    {
        if (Item is Outlook.MailItem)
        {
            Outlook.MailItem mailItem = (Outlook.MailItem)Item;
            string image = "<img src='http://someserver.com/attach.jpg' width='"100'" height='"225'" alt='"'" />";
            string body = mailItem.HTMLBody;
            body = body.Replace("</body>", image + "</body>");
            mailItem.BodyFormat = Outlook.OlBodyFormat.olFormatHTML;
            mailItem.HTMLBody = body;
        }
    }

在邮件中包括来自网站的图像.HTMLBody.

所以我找到了一种方法。 我最终不得不做的是创建一个新的邮件项目,将现有的邮件复制到其中,修改并发送该项目并取消原始邮件。 以下代码显示了我是如何做到的:

void OutlookApplication_ItemSend(object Item, ref bool Cancel)
    {
        if (Item is Outlook.MailItem)
        {
            Outlook.Inspector currInspector;
            currInspector = outlookApplication.ActiveInspector();
            Outlook.MailItem oldMailItem = (Outlook.MailItem)Item;
            Outlook.MailItem mailItem = oldMailItem.Copy();
            string image = "<img src='http://someserver.com/attach.jpg' width='"1'" height='"1'" alt='"'" />";
            string body = mailItem.HTMLBody;
            body = body.Replace("</body>", image+"</body>");
            mailItem.BodyFormat = Outlook.OlBodyFormat.olFormatHTML;
            mailItem.HTMLBody = body;
            mailItem.Send();
            Cancel = true;
            currInspector.Close(Outlook.OlInspectorClose.olDiscard);
        }
    }

我建议在...元素。可以在以下系列文章中阅读有关 HTML 呈现功能的详细信息:

  • Outlook 2007 中的 Word 2007 HTML 和 CSS 呈现功能(第 1 部分,共 2 部分)
  • Outlook 2007 中的 Word 2007 HTML 和 CSS 呈现功能(第 2 部分,共 2 部分)

Word 在最新的 Outlook 版本中用作电子邮件编辑器。

您对 ItemSend 事件处理程序有任何问题吗?行得通吗?