【问题标题】:How tell Outlook where image files are?如何告诉 Outlook 图像文件在哪里?
【发布时间】:2016-06-19 14:54:43
【问题描述】:

请多多包涵;说来话长。它是关于从 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:\test\subject_files\image001.jpg",

之类的

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

提前致谢!

【问题讨论】:

    标签: html delphi outlook delphi-7


    【解决方案1】:

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

    使用绝对链接

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

    使用嵌入图片

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

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

    【讨论】:

    • 第三个选项是将图像附加到电子邮件中,并分配给它们Content-ID 值。然后 HTML 可以使用&lt;img src="cid:..."&gt; 来引用这些附件。
    • 选项二在 Outlook 中不起作用 - HTML 邮件由 Word 而非 Outlook 呈现,并且它不理解 src="data:image" 图像。
    【解决方案2】:

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

    【讨论】:

    • 谢谢,但这又是微软式的......不必要的复杂,可能对边缘情况非常有用,但在非常简单的用例中很乏味......我会选择“公共托管” “ 路线。不过还是谢谢!
    • 这里真的没有什么复杂的 - 这就是 Outlook 和所有其他电子邮件客户端多年来一直这样做的方式..
    猜你喜欢
    • 1970-01-01
    • 2014-01-03
    • 2011-03-23
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    相关资源
    最近更新 更多