【发布时间】:2010-07-29 04:04:16
【问题描述】:
我需要在电子邮件中嵌入图像并在将电子邮件发送到 Outlook 之前对其进行预览。 CDO 和赎回不是一种选择。
我尝试了以下代码,但图像只是显示为一个小块。
procedure AddAttachment(FullFileName: String; Attachments: Outlook2000.Attachments; CID: String);
const
PR_ATTACH_CONTENT_ID = $3712001E;
PR_ATTACH_CONTENT_ID_W = $3712001F; // Unicode
PR_ATTACH_MIME_TAG = $370E001E;
PR_ATTACH_ENCODING = $37020102;
var
IAttach: IMAPIProp;
Prop: PSPropValue;
AAttachment: Outlook2000.Attachment;
FileName: String;
PropValue: TSPropValue;
Prop1: TSPropTagArray;
begin
FileName := ExtractFileName(FullFileName);
Prop := nil;
try
AAttachment := Attachments.Add(FullFileName, olByValue, 1, FileName);
IAttach := AAttachment.MAPIOBJECT as IMAPIProp;
if Assigned(IAttach) then
try
PropValue.ulPropTag := PR_ATTACH_MIME_TAG;
PropValue.Value.lpszA := 'image/jpeg';
HrSetOneProp(IAttach, @PropValue);
PropValue.ulPropTag := PR_ATTACH_CONTENT_ID;
PropValue.Value.lpszA := PAnsiChar(AnsiString(CID));
HrSetOneProp(IAttach, @PropValue);
finally
if Assigned(Prop) then MAPIFreeBuffer(Prop);
IAttach := nil;
end;
except
end;
end;
【问题讨论】:
-
您使用的是 HTML 格式吗?您是否为嵌入的图像使用 CID URL?
-
@Ben 他应该使用 HTML 格式吗?是否有涉及 CID URL 的解决方案?我相信他会使用你给出的任何答案——只要你使用 MAPI 并且当用户的电子邮件客户端是 Outlook 时它可以工作。
-
@IanBoyd,我希望他正在使用 CID URL现在他知道他们...
-
@Ben 好吧,也许他不应该;也许 CID URL 是问题所在。
-
@IanBoyd,我已经发布了一个可能的答案。