我目前正在开发Microsoft Outlook加载项,它可以在html主体的标签之前添加图像。该图像位于远程服务器上,因此图像标记的来源是http://someserver.com/image.jpg
这完全可以在新电子邮件(也称为新电子邮件)上按预期方式工作,但是,当用户单击答复或出于某种原因转发时,图像源将更改为cid:image001.jpg,而实际图像源将被放入alt标签。
我正在更改send事件的正文,因为我希望在电子邮件写完后添加图像。
在send事件上运行的代码
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;
}
}
因此,我找到了一种可行的方法。我最终要做的是创建一个新的mailItem,将现有的mailitem复制到其中,修改并发送该项目,然后取消原始邮件。以下代码显示了我是如何做到的:
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);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句