发送包含来自用户收件箱的不同邮件的新邮件作为附件

时间:2017-10-02 15:11:57

标签: microsoft-graph outlook-restapi

我正在开发一个多租户守护程序应用程序。应用程序需要代表用户发送电子邮件。应用程序发送的电子邮件必须包含来自用户收件箱的另一封电子邮件作为附件。

这可以通过简单地引用现有电子邮件的ID而不是下载现有电子邮件的内容来实现吗?

我正在尝试下面这样的事情。使用sendMail api并尝试将现有电子邮件项目作为附件引用。但是我收到了这个错误:

  

无法处理抽象类型Microsoft.OutlookServices.Item

的输入

我是朝着正确的方向吗?实现此用例的最佳方法是什么。

POST https://graph.microsoft.com/v1.0/me/sendMail HTTP/1.1
authorization: bearer {access_token}
content-type: application/json
content-length: 96

{
    "message": {
        "subject": "Meet for lunch?",
        "body": {
            "contentType": "Text",
            "content": "The new cafeteria is open."
        },
        "toRecipients": [{
            "emailAddress": {
                "address": "garthf@a830edad9050849NDA1.onmicrosoft.com"
            }
        }],
        "attachments": [
            "@odata.type": "#Microsoft.OutlookServices.ItemAttachment",
            "name": "menu.txt",
            "item": {
                "id": "AAMkADBlOWNlOWExLTdjMzktNDI5NC04MDY3LTRiZGM2NTIxMzUyNABGAAAAAAC11nCh2QXMSJ7F766v_WCUBwBSt5DMAwrBRJGMMbg9jqoYAAAGNiHGAABSt5DMAwrBRJGMMbg9jqoYAAAJXgInAAA="
                <!--This is the id of an existing email in User's inbox -->
            }
        ]
    },
    "saveToSentItems": "false"
}

1 个答案:

答案 0 :(得分:3)

您不能只提供邮件的id。如果你这样做,你会得到一个空白的附件。遗憾的是,API未设置为按ID检索项目并为您插入。

那么这意味着您需要自己检索消息并将整个JSON有效负载包含在附件的item属性中。 (见https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/message_post_attachments

您需要注意一个关键细节:在添加要附加的消息的JSON表示之前,您需要向其添加@odata.type属性,并将其设置为{{1} }。

例如:

获取要附加的消息

microsoft.graph.message

响应

GET /me/messages/{id}

发送带有物品附件的新邮件

请注意{ "@odata.etag": "W/\"CQAAABYAAACImwNLdwWFR4SE3YBnGvEfAAAOjRuW\"", "id": "AAMkADRkOWJjMjdlLTM3OWMtNDU5ZS05YWZlLTRjMjkwZWE5NWMyYgBGAAAAAACUZXoWyqoWRohmHfOzvx9wBwCImwNLdwWFR4SE3YBnGvEfAAAAAAEMAACImwNLdwWFR4SE3YBnGvEfAAAOi7KdAAA=", "createdDateTime": "2017-10-26T12:22:03Z", "lastModifiedDateTime": "2017-10-26T12:22:03Z", "changeKey": "CQAAABYAAACImwNLdwWFR4SE3YBnGvEfAAAOjRuW", "categories": [], "receivedDateTime": "2017-10-26T12:22:03Z", "sentDateTime": "2017-10-26T12:22:02Z", "hasAttachments": false, "internetMessageId": "<BLUPR13MB0274245999AAD00105B87333A6450@BLUPR13MB0274.namprd13.prod.outlook.com>", "subject": "Test attachment stuff", "bodyPreview": "Hello world!", "importance": "normal", "parentFolderId": "AQMkADRkOWJjMjdlLTM3OWMtNDU5ZS05YWZlLTRjMjkwZWE5NWMyYgAuAAADlGV6FsqqFkaIZh3zs78fcAEAiJsDS3cFhUeEhADdgGca8R8AAAIBDAAAAA==", "conversationId": "AAQkADRkOWJjMjdlLTM3OWMtNDU5ZS05YWZlLTRjMjkwZWE5NWMyYgAQAOcAXOsMKqFDlKHlkwvtP0Y=", "isDeliveryReceiptRequested": false, "isReadReceiptRequested": false, "isRead": false, "isDraft": false, "webLink": "https://outlook.office365.com/owa/?ItemID=AAMkADRkOWJjMjdlLTM3OWMtNDU5ZS05YWZlLTRjMjkwZWE5NWMyYgBGAAAAAACUZXoWyqoWRohmHfOzvx9wBwCImwNLdwWFR4SE3YBnGvEfAAAAAAEMAACImwNLdwWFR4SE3YBnGvEfAAAOi7KdAAA%3D&exvsurl=1&viewmodel=ReadMessageItem", "inferenceClassification": "focused", "body": { "contentType": "html", "content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n<meta content=\"text/html; charset=iso-8859-1\">\r\n<style type=\"text/css\" style=\"display:none\">\r\n<!--\r\np\r\n\t{margin-top:0;\r\n\tmargin-bottom:0}\r\n-->\r\n</style>\r\n</head>\r\n<body dir=\"ltr\">\r\n<div id=\"divtagdefaultwrapper\" dir=\"ltr\" style=\"font-size:12pt; color:#000000; font-family:Calibri,Helvetica,sans-serif\">\r\n<p>Hello world!</p>\r\n</div>\r\n</body>\r\n</html>\r\n" }, "sender": { "emailAddress": { "name": "MOD Administrator", "address": "admin@contoso.onmicrosoft.com" } }, "from": { "emailAddress": { "name": "MOD Administrator", "address": "admin@contoso.onmicrosoft.com" } }, "toRecipients": [ { "emailAddress": { "name": "Adele Vance", "address": "AdeleV@contoso.onmicrosoft.com" } } ], "ccRecipients": [], "bccRecipients": [], "replyTo": [] } "@odata.type": "microsoft.graph.message",属性中附加消息的JSON表示中添加了item

POST /me/sendmail
Content-Type: application/json

{
  "message": {
    "subject": "Meet for lunch?",
    "body": {
      "contentType": "Text",
      "content": "The new cafeteria is open."
    },
    "toRecipients": [{
      "emailAddress": {
        "address": "adelev@contoso.onmicrosoft.com"
      }
    }],
    "attachments": [
      {
        "@odata.type": "#microsoft.graph.itemAttachment",
        "name": "Test attachment stuff",
        "item": {
          "@odata.type": "microsoft.graph.message",
          "@odata.etag": "W/\"CQAAABYAAACImwNLdwWFR4SE3YBnGvEfAAAOjRuW\"",
          "id": "AAMkADRkOWJjMjdlLTM3OWMtNDU5ZS05YWZlLTRjMjkwZWE5NWMyYgBGAAAAAACUZXoWyqoWRohmHfOzvx9wBwCImwNLdwWFR4SE3YBnGvEfAAAAAAEMAACImwNLdwWFR4SE3YBnGvEfAAAOi7KdAAA=",
          "createdDateTime": "2017-10-26T12:22:03Z",
          "lastModifiedDateTime": "2017-10-26T12:22:03Z",
          "changeKey": "CQAAABYAAACImwNLdwWFR4SE3YBnGvEfAAAOjRuW",
          "categories": [],
          "receivedDateTime": "2017-10-26T12:22:03Z",
          "sentDateTime": "2017-10-26T12:22:02Z",
          "hasAttachments": false,
          "internetMessageId": "<BLUPR13MB0274245999AAD00105B87333A6450@BLUPR13MB0274.namprd13.prod.outlook.com>",
          "subject": "Test attachment stuff",
          "bodyPreview": "Hello world!",
          "importance": "normal",
          "parentFolderId": "AQMkADRkOWJjMjdlLTM3OWMtNDU5ZS05YWZlLTRjMjkwZWE5NWMyYgAuAAADlGV6FsqqFkaIZh3zs78fcAEAiJsDS3cFhUeEhADdgGca8R8AAAIBDAAAAA==",
          "conversationId": "AAQkADRkOWJjMjdlLTM3OWMtNDU5ZS05YWZlLTRjMjkwZWE5NWMyYgAQAOcAXOsMKqFDlKHlkwvtP0Y=",
          "isDeliveryReceiptRequested": false,
          "isReadReceiptRequested": false,
          "isRead": false,
          "isDraft": false,
          "webLink": "https://outlook.office365.com/owa/?ItemID=AAMkADRkOWJjMjdlLTM3OWMtNDU5ZS05YWZlLTRjMjkwZWE5NWMyYgBGAAAAAACUZXoWyqoWRohmHfOzvx9wBwCImwNLdwWFR4SE3YBnGvEfAAAAAAEMAACImwNLdwWFR4SE3YBnGvEfAAAOi7KdAAA%3D&exvsurl=1&viewmodel=ReadMessageItem",
          "inferenceClassification": "focused",
          "body": {
            "contentType": "html",
            "content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n<meta content=\"text/html; charset=iso-8859-1\">\r\n<style type=\"text/css\" style=\"display:none\">\r\n<!--\r\np\r\n\t{margin-top:0;\r\n\tmargin-bottom:0}\r\n-->\r\n</style>\r\n</head>\r\n<body dir=\"ltr\">\r\n<div id=\"divtagdefaultwrapper\" dir=\"ltr\" style=\"font-size:12pt; color:#000000; font-family:Calibri,Helvetica,sans-serif\">\r\n<p>Hello world!</p>\r\n</div>\r\n</body>\r\n</html>\r\n"
          },
          "sender": {
            "emailAddress": {
              "name": "MOD Administrator",
              "address": "admin@contoso.onmicrosoft.com"
            }
          },
          "from": {
            "emailAddress": {
              "name": "MOD Administrator",
              "address": "admin@contoso.onmicrosoft.com"
            }
          },
          "toRecipients": [
            {
              "emailAddress": {
                "name": "Adele Vance",
                "address": "AdeleV@contoso.onmicrosoft.com"
              }
            }
          ],
          "ccRecipients": [],
          "bccRecipients": [],
          "replyTo": []
        }
      }
    ]
  },
  "saveToSentItems": "false"
}