首页 文章

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

提问于
浏览
1

请多多包涵;有一个很长的故事即将来临 . 它是以编程方式从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 回答

  • 3

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

    Use aboslute links

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

    Use embedded images

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

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

    正如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 属性的值 .

相关问题