【问题标题】:Embed Image to Outlook using extended mapi functions使用扩展的 mapi 函数将图像嵌入到 Outlook
【发布时间】: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,我已经发布了一个可能的答案。

标签: delphi outlook embed mapi


【解决方案1】:

提问者尚未发布他的 HTML 文本。我怀疑问题是他的 CID url 格式不正确 - 不管我没有测试过这个。

如果 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 标头不能。 (对于 content-id,guid 是一个不错的选择,但它必须包含 @ 符号。为了遵守,您可以将“@u”附加到 guid。)

这足以让电子邮件在接收端正确显示。发送前是否会在outlook中正确预览,我不知道。

您可能还希望看到这个问题:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-22
    • 2022-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    相关资源
    最近更新 更多