【问题标题】:Finding a CID reference for attachments in Exchange Contacts在 Exchange 联系人中查找附件的 CID 参考
【发布时间】:2016-05-04 09:57:06
【问题描述】:

我正在使用 EWS 制作一个 powershell 程序:

  • 从备份联系人文件夹中恢复一些数据(电话、网址、备注字段...)
  • 在新联系人的默认联系人文件夹中设置这些值

一切正常,当然,除了添加到注释字段的附件,我仍然可以下载它们。

        foreach ($attch in $Item.Attachments)
        {
            $downloadDirectory = ".\attachments"
            $attch.Load()
            $fiFile = new-object System.IO.FileStream(($downloadDirectory + “\” + $attch.Name.ToString()), [System.IO.FileMode]::Create)
            $fiFile.Write($attch.Content, 0, $attch.Content.Length)
            $fiFile.Close()
            write-host "Downloaded Attachment : " + (($downloadDirectory + “\” + $attch.Name.ToString())) 

        }

或者上传它们。 (这里是静态的,用于测试目的)

$att = $item.Attachments.AddFileAttachment("C:\Scripts\myscript\attachments\PowerShell_transcript.20140506143510.txt")
$att.ContentId = 'test'
$att.IsInline=$false

理想情况下,我正在寻找匹配的 CID 引用并使用相同的引用上传回附件。

    <div><font face="Calibri" size="2"><span style="font-size:11pt;">
<img src="cid:0DF540471453B832E300400FF03B0900CFEC1201@1"> 
    <a href="cid:74D8EEA6180AD131B48DC59373FABBABD7E361BB@1">SomeDoc.docx</a>
    </span></font></div>

当然,当从exchange中检索对象时,它没有contentid(我猜它应该是CID值)。

<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
  <Obj RefId="0">
    <TN RefId="0">
      <T>Microsoft.Exchange.WebServices.Data.FileAttachment</T>
      <T>Microsoft.Exchange.WebServices.Data.Attachment</T>
      <T>Microsoft.Exchange.WebServices.Data.ComplexProperty</T>
      <T>System.Object</T>
    </TN>
    <ToString>Microsoft.Exchange.WebServices.Data.FileAttachment</ToString>
    <Props>
      <Nil N="FileName" />
      <BA N="Content"></BA>
      <B N="IsContactPhoto">false</B>
      <S N="Id">AAMkADdmMDBkOTk4LTNlYzMtNDk1MS05ZTdhLWJmOGE.....</S>
      <S N="Name">SomeDoc.docx</S>
      <S N="ContentType">application/vnd.openxmlformats-officedocument.wordprocessingml.document</S>
      <Nil N="ContentId" /> <=== WHERE IS MY VALUE :'(
      <Nil N="ContentLocation" />
      <I32 N="Size">1764632</I32>
      <DT N="LastModifiedTime">2016-01-26T15:08:03+00:00</DT>
      <B N="IsInline">false</B>
    </Props>
  </Obj>
</Objs>

有人知道检索该值的方法吗?

  • 服务器/邮箱:Exchange 2013 SP1

谢谢!

【问题讨论】:

    标签: powershell outlook exchange-server exchangewebservices


    【解决方案1】:

    它没有 contentid(我猜它应该是 CID 值)。

    只有在联系人中的 Mime 消息 https://www.ietf.org/rfc/rfc2111.txt 的内联附件中,附件才会有 cid,因为您处理 Exchange 数据类型时它永远不会有效(例如,即使联系人图片没有 cid) .

    干杯 格伦

    【讨论】:

    • 感谢 Glen,这可能是 Microsoft 的一些做事方式。应该在某处有此信息,否则无法打开这些文件。
    • 要在 EWS 中打开附件,它使用 AttachmentId 属性,在 MAPI 中使用附件编号,所以我不太确定您的意思是什么?联系人是 Exchange 中的丰富数据类型,如果您实际请求联系人 Exchange 上的 MIMEContent,它们不是 MIME 消息,将返回 VCard。
    • 好的。但是,如果此值未存储在某处,Outlook 如何能够将 cid:74D8EEA6180AD131B48DC593 与该附件匹配?
    • 匹配什么?渲染消息的正文?我的建议是您使用 MFCMapi 或 Outlook Spy 等 Mapi 编辑器查看一些对象。如果 cid 已设置在您将看到的消息上。 cid 旨在让您在邮件正文中引用附件。您可以在附件上设置 contentid(但仅在创建时),但如果不需要,默认情况下不会设置。
    猜你喜欢
    • 2012-02-28
    • 2018-03-27
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多