我想通过Graph API发送邮件,并通过其驱动器项ID附加文件。
此刻,我可以通过Graph API成功发送电子邮件并附加本地服务器上的文件。
但是文件起源于OneDrive,所以当前情况是我必须将文件下载到我的服务器,然后通过sendMail端点作为附件重新上传它,然后从我的服务器中删除它。
如果可以仅提供文件ID并让Office 365在本地解析所有文件,这似乎是不必要的步骤。
postgresql_role
答案 0 :(得分:-1)
您可以通过驱动器项ID附加文件,该文件名为referenceAttachment,但在代码中不是fileAttachment。 v1.0版对referenceAttachment的支持非常有限。而且,我的意思是,除了承认一个人存在之外,您对他们无能为力。
egorbunov的回答:Send reference attachment to email via Graph API
Create the message draft using POST request to https://graph.microsoft.com/beta/me/messages with payload: { "subject": "TestMessage", "toRecipients": [ { "emailAddress":{ "address":"egor-mailbox@ya.ru" } } ], "body": { "contentType": "html", "content": "<b>Hello!</b>" } }, As a response you will get the whole message structure with id set to something like
AQMkADAwATMwMAItMTJkYi03YjFjLTAwAi0wMAoARgAAA_hRKmxc6QpJks9QJkO5R50HAP6mz4np5UJHkvaxWZjGproAAAIBDwAAAP6Gz4np5UJprokAwAog 让我们将其称为{messageID}。注意:如您所见,我已通过 html类型的正文。这是必需的,因为(至少在GraphAPI中 资源管理器)图形API在您尝试添加时返回错误 非HTML正文内容类型的邮件的参考附件。
After that you can create an attachment using POST request to https://graph.microsoft.com/beta/me/messages/{messageID}/attachments { "@odata.type": "#microsoft.graph.referenceAttachment", "name": "AttachmentName", "sourceUrl": "https://1drv.ms/u/s!ASDLKASDLASHDLASKDLJAXCXZ_DASD", "providerType": "oneDriveConsumer", "isFolder": false } After step 2 you will see created message in your mailbox Drafts folder. To send it use
https://graph.microsoft.com/beta/me/messages/ {messageID} / send(=( 原来它也不起作用)
一种替代解决方案,不添加附件,而是直接在邮件正文中添加文件链接(让收件人根据需要下载)。