我正在以编程方式尝试以下列方式在C#中获取附件数据: -
public class Agenda extends AppCompatActivity implements RecycleViewAdapter.Listener, FragmentDrawer.FragmentDrawerListener, PreferenceManager.OnActivityResultListener {
protected void onCreate(Bundle savedInstanceState) {
Log.d("OnCreate", "----------------------------------------");
super.onCreate(savedInstanceState);
}
}
现在,如果附件是文本文件或图像文件,我的代码工作正常。但是,如果附件本身就是一封邮件,它会抛出属性未知或无法找到的异常。
请建议在哪种情况/附件类型中,此属性“http://schemas.microsoft.com/mapi/proptag/0x37010102”不起作用,在这些情况下,在字节数组中获取附件数据的替代属性/方法是什么?
由于
答案 0 :(得分:1)
PR_ATTACH_DATA_BIN
仅适用于常规按值附件(PR_ATTACH_METHOD == ATTACH_BY_VALUE)。嵌入式消息或OLE附件不公开该属性 - 它们使用必须使用PR_ATTACH_DATA_OBJ
打开的IAttach::OpenProperty(IID_IStorage, ...)
- 使用OutlookSpy查看现有消息(选择消息,单击IMessage按钮) ,转到GetAttachmentTable选项卡,双击附件。
另请注意,PropertyAccessor.GetProperty
只能检索小附件的属性。对于大型附件,PR_ATTACH_DATA_BIN
必须使用IAttach::OpenProperty(IID_IStorage, ...)
作为IStream打开 - PropertyAccessor.GetProperty
不会这样做。您将需要使用扩展MAPI(C ++或Delphi)或Redemption(公开RDOAttachment。AsArray
/ AsText
/ AsStream
属性。
答案 1 :(得分:0)
Microsoft Graph Rest API是大多数Microsoft Data(包括事件),大多数Office产品(包括Outlook)的单个端点和包装。最重要的是,任何一种语言都可以向端点发出请求并检索信息。请参阅完整的文档HERE入门。
有关获取Outlook附件的简单“获取”请求,请参见以下代码。请注意,还有其他更复杂的实现。文档:https://docs.microsoft.com/en-us/graph/api/attachment-get?view=graph-rest-1.0&tabs=http滚动链接,您可以找到有关如何实现此功能的C#,Java和JavaScript示例。
GET /me/messages/{id}/attachments/{id}
GET /users/{id | userPrincipalName}/messages/{id}/attachments/{id}
GET /me/messages/{id}/attachments/{id}/$value
GET /users/{id | userPrincipalName}/messages/{id}/attachments/{id}/$value