如何告诉Outlook图像文件在哪里?

时间:2016-06-19 14:54:43

标签: html delphi outlook delphi-7

请耐心等待;这是一个很长的故事。它是以编程方式从Delphi-7创建HTML电子邮件,将它们发送到Outlook,而不是在其中显示图片,所以如果您对此不了解,请不要费心阅读这一切。

我有一个应用程序,可以将Delphi-7程序中的可变文本电子邮件发送到Outlook。我使用TMailInfo项目,使用模板HTML文件进行布局,用程序中的数据替换占位符(%NAME%变为" Johnson"等),创建新的Outlook消息并填充HTMLbody我的结果。所有这一切都很好。

最近,我的客户向我发送了一条新的示例消息,询问我是否可以在发送给我时将此电子邮件更改为新的布局。所以我把电子邮件保存为html(从Outlook中生成一个巨大的HTML文件,这个代码对像我这样的非HTML大师来说几乎无法理解)),用我的占位符替换静态数据,并将其保存为新的模板。

除了一件事之外,这个工作正常 - 新的布局包括一些本地图片(不能从公共网站资源获得)。当来自outlook的原始样本邮件时,创建了两个东西 - 一个带有html代码的htm文件,名为" Subject"和一个名为" Subject_files"的文件夹,包含图片文件以及filelist.xml和mso文件。

生成的HTML将图片称为src =" subject_files / image001.jpg">等。

当我将HTML发送到Outlook时,它显然不知道图像在哪里 - 但我该如何告诉他?

我尝试了什么:

  • 复制" subject_files"文件夹到"我的文件"

  • 以多种格式对图片的链接进行硬编码(即

src =" C:/test/subject_files/image001.jpg" ;,

src =" C://test/subject_files/image001.jpg",

SRC =" C:\测试\ subject_files \ image001.jpg",

之类的

但两者都不起作用......所以我的问题是,如何以编程方式创建HTML消息时如何告诉Outlook在哪里查找图像文件?

提前致谢!

2 个答案:

答案 0 :(得分:3)

收到电子邮件后,收件人无法访问您的计算机,因此图片不会显示在电子邮件中。要通过电子邮件发送图像,您可以:

使用aboslute链接

<img src="http://www.example.com/images/header.jpg">

使用嵌入图片

将您的图像转换为BASE64,您可以在线找到许多类似的网站  https://www.base64-image.de/然后

<img src="data:image/jpg;base64,/*base64-generated-string*/" />

答案 1 :(得分:1)

如Remy所述,图像可以作为常规附件添加。然后,您需要使用PR_ATTACH_CONTENT_ID设置http://schemas.microsoft.com/mapi/proptag/0x3712001F属性(DASL名称Attachment.PropertyAccessor.SetProperty)。 HTML正文必须使用cid属性的匹配值 - <img src="cid:xyz">,其中“xyz”是PR_ATTACH_CONTENT_ID属性的值。