如何检索完整 url 插入到电子邮件正文中的图像?

How to retrieve images full url inserted into email body?

使用聪明的互联网组件,我能够阅读电子邮件,正文中插入了图片,结果是这样 html:

email with photo<div dir="ltr"><div><img src="cid:ii_kctxj0az0" width="192" height="192"><br><br></div></div>

问题我需要完整的 url 图像才能显示在在线网页上,我该怎么做?答案可以是通用代码。

代码:

var
  i: Integer;
  result: string;
begin
  if (clPop31.Active) then Exit;

  clPop31.Server := 'mailserver.com';
  clPop31.Port := 110;
  clPop31.UserName := 'user@server.com';
  clPop31.Password := 'xxxxxxxxxxx';

  lbMessages.lines.Clear();

  clPop31.Open();
  try
    for i := 1 to clPop31.MessageCount do begin
      clPop31.Retrieve(i);

      lbMessages.lines.Add(result + clMailMessage1.Subject + clMailMessage1.MessageText.text);
    end;
  finally
    clPop31.Close();
  end;

  ShowMessage('Done');

end;

嵌入式资源没有在线URL。

在 HTML 编码的电子邮件中,当 <img> 元素(或其他资源相关元素,如 <bgsound><audio><video>等)使用 cid: URL 作为其来源,它指的是链接到 HTML 的电子邮件附件。例如,如果 HTML 在 MIME multipart/related 部分内,则与 HTML 相关的附件也在同一 MIME 部分内。

因此,例如,对于 src 属性为 "cid:ii_kctxj0az0"<img> 元素,它指的是 Content-ID 为 [=20] 的链接电子邮件附件=]. <img> 元素直接从该附件获取其图片数据,而不是从某处在线的外部资源获取。

因此,如果您想在在线网页中使用资源数据,则必须从引用的附件中提取数据,然后:

  1. 根据需要将数据保存到在线某处的文件中,因此您将拥有一个在线 URL 网页可以通过该文件引用数据。

  2. 或者,现代网络浏览器的支持 data: URLs,您可以使用它直接将数据嵌入 HTML 本身。