Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# PropertyAccessor.GetProperty(PR_ATTACH_DATA_BIN)无法用于outlook附件_C#_Email_Outlook Addin - Fatal编程技术网

C# PropertyAccessor.GetProperty(PR_ATTACH_DATA_BIN)无法用于outlook附件

C# PropertyAccessor.GetProperty(PR_ATTACH_DATA_BIN)无法用于outlook附件,c#,email,outlook-addin,C#,Email,Outlook Addin,我需要创建一个OutLook外接程序,用于捕获带有大型附件的电子邮件,并用可用于下载附件的URL替换附件 我发现它显示了如何在发送附件之前修改附件,这看起来是一个很好的起点,但问题是调用: 常量字符串PR_ATTACH_DATA_BIN= ""; var附件数据= 附件.PropertyAccessor.GetProperty( 请购单(附上数据) 失败,错误为属性未知或找不到 我可以调用attachment.PropertyAccessor.GetProperty()来获取附件类型,该类型为1

我需要创建一个OutLook外接程序,用于捕获带有大型附件的电子邮件,并用可用于下载附件的URL替换附件

我发现它显示了如何在发送附件之前修改附件,这看起来是一个很好的起点,但问题是调用:

常量字符串PR_ATTACH_DATA_BIN= "";

var附件数据= 附件.PropertyAccessor.GetProperty( 请购单(附上数据)

失败,错误为属性未知或找不到

我可以调用attachment.PropertyAccessor.GetProperty()来获取附件类型,该类型为1(attache_BY_VALUE),因此我应该能够使用attachment.PropertyAccessor.GetProperty(PR_attache_data_BIN)获取数据

我想知道这里是否有特权问题。我在这里看到:dev.office.com/docs/add-ins/outlook/understanding-outlook-add-in-permissions存在outlook加载项权限,如果我没有读写项访问权限,那么这可能会失败。我不知道这是如何设置的,也不知道设置在哪里。他们提到在舱单上已经设定了,但我不知道我在哪里可以做到这一点


我正在使用Visual Studio Community 2015。

Outlook对象模型无法使用
PropertyAccessor.GetProperty
检索大型二进制或字符串MAPI属性。在低级别(扩展MAPI、C++或Delphi)上,<代码> IMAPI::GETPROSH()/CUT>对于大型<代码> PTSSTIG8/PTXUnODID/PTXBIONEX/COD>属性不适用。它们必须作为IStream(
IMAPIProp::OpenProperty(PR\u ATTACH\u DATA\u BIN,IIS\u IStream,…)打开)
。如果使用是一个选项,则其附件对象将公开
AsText
AsArray
AsStream
等属性

  set Session = CreateObject("Redemption.RDOSession")
  Session.MAPIOBJECT = Application.Session.MAPIOBJECT
  set item = Session.GetMessageFromID(Application.ActiveExplorer.Selection(1).EntryID)
  for each attach in item.Attachments
    MsgBox attach.AsText
  next

Outlook对象模型无法使用
PropertyAccessor.GetProperty
检索大型二进制或字符串MAPI属性。在低级别(扩展MAPI、C++或Delphi)上,<代码> IMAPI::GETPROSH()/CUT>对于大型<代码> PTSSTIG8/PTXUnODID/PTXBIONEX/COD>属性不适用。它们必须作为IStream(
IMAPIProp::OpenProperty(PR\u ATTACH\u DATA\u BIN,IIS\u IStream,…)打开)
。如果使用是一个选项,则其附件对象将公开
AsText
AsArray
AsStream
等属性

  set Session = CreateObject("Redemption.RDOSession")
  Session.MAPIOBJECT = Application.Session.MAPIOBJECT
  set item = Session.GetMessageFromID(Application.ActiveExplorer.Selection(1).EntryID)
  for each attach in item.Attachments
    MsgBox attach.AsText
  next

谢谢你的回答,但在这一点上,我认为我的问题更基本。在我的测试中,附件是一个小的文本文件,因此我认为我应该能够获取它的PropertyAccessor.GetProperty(),尽管由于大小限制,最终我需要使用其他文件。如果我起诉attachment.SaveAsFile(),我还会收到一个异常,告诉我我没有执行此操作的适当权限。MSVS和C#不是我的原生开发环境,因此我怀疑我缺少一些非常基本的东西。Attachment.Type属性的值是多少?使用OutlookSpy()查看消息?选择邮件,单击IMessage按钮,转到GetAttachmentTable选项卡,双击附件条目。您看到PR_ATTACH_DATA_BIN属性了吗?PR_ATTACH_TYPE=7,并且有PR_ATTACH_DATA_BIN属性。PR_ATTACH_TYPE=7是新的ATTACH_BY_WEB_REF,用于新的OneDrive WEB附件。您确定PR_ATTACH_DATA_BIN存在并且可以看到其值吗?在Outlook 2016中保存附件时,它会创建一个*.url文件,指向PR_ATTACH_LONG_PATHNAME_W.PR_ATTACH_DATA_BIN中的一个位置,其中包含附件的内容。虽然没有PR_ATTACH_LONG_PATHNAME_W。谢谢你的回答,但在这一点上,我认为我的问题更基本。在我的测试中,附件是一个小的文本文件,因此我认为我应该能够获取它的PropertyAccessor.GetProperty(),尽管由于大小限制,最终我需要使用其他文件。如果我起诉attachment.SaveAsFile(),我还会收到一个异常,告诉我我没有执行此操作的适当权限。MSVS和C#不是我的原生开发环境,因此我怀疑我缺少一些非常基本的东西。Attachment.Type属性的值是多少?使用OutlookSpy()查看消息?选择邮件,单击IMessage按钮,转到GetAttachmentTable选项卡,双击附件条目。您看到PR_ATTACH_DATA_BIN属性了吗?PR_ATTACH_TYPE=7,并且有PR_ATTACH_DATA_BIN属性。PR_ATTACH_TYPE=7是新的ATTACH_BY_WEB_REF,用于新的OneDrive WEB附件。您确定PR_ATTACH_DATA_BIN存在并且可以看到其值吗?在Outlook 2016中保存附件时,它会创建一个*.url文件,指向PR_ATTACH_LONG_PATHNAME_W.PR_ATTACH_DATA_BIN中的一个位置,其中包含附件的内容。但是没有路径名。