使用Delphi中的嵌入式图像生成HTML电子邮件

时间:2009-10-14 22:05:54

标签: delphi email mime smtpclient

有人知道使用嵌入式图像和备用文本部分生成HTML电子邮件的好例子吗?我需要用HTML生成一些表格报告,并希望嵌入徽标和其他图像。

我相信Indy可以通过一些工作做到这一点,但我希望有人可以指出我作为一个起点的好榜样。我愿意使用Indy以外的库和提供源的商业解决方案。实施的质量和时间比成本更重要。该解决方案还需要支持基于SMTP的邮件交换。

我愿望清单上的另一个项目是能够利用FastReports,TRichView或类似工具生成HTML消息内容。有两种HTML输出过滤器,但我没有机会进行任何测试。任何关于这个主题的反馈都将不胜感激。

提前致谢!

大卫

5 个答案:

答案 0 :(得分:10)

阅读Indy网站上的以下文章,他们解释了填充TIdMesaage HTML的正确方法:

HTML Messages

New HTML Message Builder class

答案 1 :(得分:1)

这些天我使用Clever Component的电子邮件客户端,但不是免费的。

TurboPower Internet(OpenSource)控件过去对我很有用。

答案 2 :(得分:1)

function data64(const filename:string): ansistring;
// uses Classes, IdGlobalProtocols, EncdDecd;
const
  crlf = #13#10;
begin
  result := '';
  with TIdMimeTable.Create do
  try
    result := 'data:'
      + GetFileMIMEType(filename) + ';';
  finally
    Free;
  end;
  with TMemoryStream.Create do
  try
    LoadFromFile(filename);
    result := result + 'base64,' + crlf
      + EncodeBase64(Memory,Size);
  finally
    Free;
  end;
end;

答案 3 :(得分:0)

我们多年前尝试使用Indy和嵌入式cid:这样的图像: https://forums.codegear.com/thread.jspa?threadID=17473

我们从来没有稳定,每次有另一个邮件阅读器被禁止(如果我们在Outlook中工作,那么Thunderbird不接受它,或者Outlook Express,或者等等)。

最后,我们使用AspNetEmail使用.NET完成了它,它就像一个魅力。

- 的Jeroen

答案 4 :(得分:0)

这一切都取决于您必须能够支持多少个不同的远程邮件客户端。我相信支持SMTP / Mime的着名Delphi库会做一个合理的工作,但当你的一个邮件用户发现他们的收件人看不到格式正确的电子邮件时,他们可能会给你带来支持问题。

我建议您访问Jacob Palme的site,它会让您了解可能遇到的一些问题。这可能有点过时,但总的来说,无论您构建和发送复杂的MIME电子邮件,您都会遇到一个或多个无法正确处理语法的邮件客户端。该站点还包含一些有用的结构示例链接,您可以检查和测试这些示例。

我并不是说你必须像我们一样推行自己的逻辑:在绝大多数情况下,一个好的打包解决方案可能会成功。几年前我们编写了我们自己的Delphi代码来处理这个问题,所以我会留给其他人来为你提供有关现在架子上的最新信息。