delphi – 使用扩展的mapi函数将图像嵌入到Outlook中
发布时间:2020-12-15 09:45:54 所属栏目:大数据 来源:网络整理
导读:我需要在电子邮件中嵌入图像并在Outlook中发送之前预览电子邮件. CDO和赎回不是一种选择. 我尝试了以下代码,但图像只显示为一个小块. procedure AddAttachment(FullFileName: String; Attachments: Outlook2000.Attachments; CID: String); const PR_ATTACH_
我需要在电子邮件中嵌入图像并在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网址格式不正确 – 无论我没有测试过这个问题.
如果Content-ID标头设置为: Content-Type: image/jpeg Content-Disposition: inline Content-ID: afd383988e86ad958709@u 那么HTML应该像这样引用它: <img width="100" height="100" href="cid:afd383988e86ad958709@u" /> 特别是,cid URL必须具有前缀“cid:”,但content-id标头不能. (guid对于content-id是一个很好的选择,除了它必须包含一个@符号.为了遵守,你可以将’@ u’附加到guid.) 这足以让电子邮件在接收端正确显示.在发送之前是否会在outlook中正确预览,我不知道. 您可能还希望看到这个问题: > Embedding images into html email with java mail (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |