【发布时间】:2014-12-05 22:25:50
【问题描述】:
我目前正在为 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;
}
}
【问题讨论】:
-
包含内嵌图像的正确方法是使用 ContentId(cid)。发生的情况是图像实际上是电子邮件上的常规附件,然后由您看到的这个 cid 前缀引用。这样,图像就可以在本地使用,并且不需要托管在某个地方。如果您随后发送该消息并且 gmail 中的某人查看它,gmail 会自动将 cid 转换为链接,以便消息在浏览器中正确显示。
-
此外,您可能正在寻找与此处 social.msdn.microsoft.com/Forums/vstudio/en-US/… 类似的解决方案
-
我不是在尝试嵌入图像,而是在尝试使用链接图像,即网络托管图像。出于我的目的,静态附加图像将不起作用。正如我在原始帖子中所说,使用新的电子邮件可以正常工作,在回复或转发期间,html 被解析并且我的图像 src 被更改
-
我明白是什么但不明白为什么。 Outlook 处理它的方式有什么问题?您尚未描述您的自定义用例是什么。
-
为什么不重要,但如果它能让你感觉更好,我可以给你一个例子。假设我正在发送一封电子邮件,其中包含在您打开电子邮件之前可能会更改的产品图片。这样做的唯一方法是托管映像并在更新时根据需要进行更改。无论哪种方式,我曾经使用过的每种语言都允许我创建一个适当的 html 电子邮件,其中包含托管在网站上的图像。即使在一个干净的发送 Outlook 允许我这样做。唯一不起作用的是当我使用回复或转发时
标签: c# outlook-addin