我正在尝试将具有Indy 9的SMTP通过SMTP发送html电子邮件的功能添加到我的程序中。使用HTML语句),则可以正确发送电子邮件。我的问题在于将图片嵌入HTML流中。
HTML流将使用如下命令
<IMG SRC="cid:foo4atfoo1atbar.net" ALT="IETF logo">
尽管Indy 10组件TIdAttachmentFile具有ComponentID属性,其值必须设置为“ cid”引用的值,但我找不到在Indy 9中的何处设置ComponentID属性。
目前,用于添加图片的代码(其名称在laPicture.text中)如下所示
if laPicture.text <> '' then
with TIdAttachment.Create (email.MessageParts, laPicture.text) do
begin
ContentDisposition:= 'inline';
ContentType:= 'image/jpeg';
DisplayName:= ExtractFileName (laPicture.text);
filename:= ExtractFileName (laPicture.text);
end;
在哪里定义ContentID?
而且,尽管这是一个愚蠢的问题,但我如何知道我拥有的Indy版本?
最佳答案
TIdAttachment
源自具有公共TIdMessagePart
属性的ContentID
。如果您安装的Indy 9版本没有该属性,则您使用的版本已过时,因此请使用ExtraHeaders
属性来手动添加Content-ID
标头。
请参阅Indy网站上的以下博客文章,以获取有关使用HTML电子邮件的更多信息:
HTML Messages
更新:因此,如果HTML显示cid:foo4atfoo1atbar.net
,则需要在代码中进行匹配以使其匹配:
with TIdAttachment.Create (email.MessageParts, laPicture.text) do
begin
...
ContentID := '<foo4atfoo1atbar.net>';
// or this, if you do not have the ContentID property available:
// ExtraHeaders.Values['Content-ID'] := '<foo4atfoo1atbar.net>';
end;
请注意,在Indy 9中,您必须手动提供括号。如果省略,Indy 10会为您插入它们,例如:
ContentID := 'foo4atfoo1atbar.net';
关于delphi - 使用带有嵌入式图片的Indy 9发送电子邮件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14279211/