Graph API:通过驱动器项目ID发送带有附件的邮件吗?

时间:2018-10-09 08:49:09

标签: php microsoft-graph

我想通过Graph API发送邮件,并通过其驱动器项ID附加文件。

此刻,我可以通过Graph API成功发送电子邮件并附加本地服务器上的文件。

但是文件起源于OneDrive,所以当前情况是我必须将文件下载到我的服务器,然后通过sendMail端点作为附件重新上传它,然后从我的服务器中删除它。

如果可以仅提供文件ID并让Office 365在本地解析所有文件,这似乎是不必要的步骤。

postgresql_role

1 个答案:

答案 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(=(   原来它也不起作用)

一种替代解决方案,不添加附件,而是直接在邮件正文中添加文件链接(让收件人根据需要下载)。