请耐心等待;这是一个很长的故事。它是以编程方式从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在哪里查找图像文件?
提前致谢!
答案 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
属性的值。