请多多包涵;有一个很长的故事即将来临 . 它是以编程方式从Delphi-7创建HTML电子邮件,将它们发送到Outlook,而不是在其中显示图片,因此如果您对此不了解,请不要费心阅读所有内容 .
我有一个应用程序,可以将Delphi-7程序中的可变文本电子邮件发送到Outlook . 我正在使用TMailInfo项目,使用模板HTML文件进行布局,使用程序中的数据替换占位符(%NAME%变为“Johnson”等),创建新的Outlook消息并使用我的结果填充HTMLbody . 所有这一切都很好 .
最近我的客户给我发了一条新的示例消息,询问我是否可以在发送给我时将此电子邮件更改为新的布局 . 所以我把电子邮件保存为html(从Outlook中生成一个巨大的HTML文件,这个代码对像我这样的非HTML大师来说几乎无法理解)),用我的占位符替换静态数据,并将其保存为新的模板 .
除了一件事之外,这个工作得很好 - 新的布局包括一些本 Map 片(不能从公共网站资源获得) . 当来自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 回答
收到电子邮件后,收件人无法访问您的计算机,因此图像不会显示在电子邮件中 . 要通过电子邮件发送图像,您可以:
Use aboslute links
Use embedded images
将您的图像转换为BASE64,您可以在线找到许多网站,如https://www.base64-image.de/
正如Remy所提到的,图像可以作为常规附件添加 . 然后,您需要使用
Attachment.PropertyAccessor.SetProperty
设置PR_ATTACH_CONTENT_ID
属性(DASL名称http://schemas.microsoft.com/mapi/proptag/0x3712001F
) . HTML正文必须使用cid属性的匹配值 -<img src="cid:xyz">
,其中"xyz"是PR_ATTACH_CONTENT_ID
属性的值 .