发送包含来自用户收件箱的不同消息作为附件的新消息 [英] Send new message that includes a different message from user's inbox as attachment

查看:13
本文介绍了发送包含来自用户收件箱的不同消息作为附件的新消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am working on a multi-tenant daemon application. The application needs to send an email on behalf of the user. The email sent by the application would have to include another email from the user's inbox as attachment.

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

Can this be achieved by simply referring to the id of the existing email instead of downloading the content of the existing email?

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

I am trying something like this below. Using the sendMail api and trying to refer the existing email item as an attachment. But I am getting this error :

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

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

Am I in the right direction? What is the best way of achieving this use case.

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"
}

推荐答案

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

You cannot provide just the id of the message. If you do that, you'll get a blank attachment. Unfortunately the API is not set up to retrieve the item by ID and insert it for you.

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

So what that means is you need to retrieve the message yourself and include that entire JSON payload in the item property of the attachment. (See https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/message_post_attachments)

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

There is one key detail that you need to be aware of: before adding the JSON representation of the message to be attached, you need to add an @odata.type property to it, and set it to 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>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none">
<!--
p
	{margin-top:0;
	margin-bottom:0}
-->
</style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Helvetica,sans-serif">
<p>Hello world!</p>
</div>
</body>
</html>
"
  },
  "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", 添加到 item 属性中附加消息的 JSON 表示.

Send a new mail with item attachment

Notice the addition of "@odata.type": "microsoft.graph.message", to the JSON representation of the attached message in the item property.

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>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none">
<!--
p
	{margin-top:0;
	margin-bottom:0}
-->
</style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Helvetica,sans-serif">
<p>Hello world!</p>
</div>
</body>
</html>
"
          },
          "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"
}

这篇关于发送包含来自用户收件箱的不同消息作为附件的新消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆