发送电子邮件时从 Outlook REST API 获取电子邮件 ID

Getting the email id from the Outlook REST API when sending email

我正在尝试使用 Microsoft Rest API 代表我们的用户发送电子邮件。当我将消息创建为草稿时,我会得到一个 ID,我可以在以后的编辑、删除、查看完整对话(发送后)等请求中使用它。

没理由不想存草稿,直接发。发送后,我仍然想查看完整的对话。但是,如果我只是发送电子邮件(使用 /sendmail 端点),我不会得到该 ID。反正有得到它吗?这是我的要求:

POST https://outlook.office.com/api/v2.0/Users/email/sendmail

{
    "Message": {
        "Subject": "Test",
        "Importance": "Normal",
        "ToRecipients": [{
            "EmailAddress": {
                "Address": "<email>",
                "Name": "<name>"
            }
        }],
        "Sender": {
            "EmailAddress": {
                "Address": "<email",
                "Name": "<name>"
            }
        },
        "Body": {
            "ContentType": "HTML",
            "Content": "<html>\n<head>\n  <style>\n    p { color: red; }\n  </style> \n</head>\n<body>\n  <p>Test</p>\n</body>\n</html>\n"
        }
    },
    "SaveToSentItems": "true"
}

HTTP 响应代码为 202,电子邮件已发送,但正文为空(无任何内容)。

我认为这不重要,因为我可以在 Postman 中重新创建它,但我 运行 在 Nodejs 中使用 node-outlook 包。

通过 REST 和 EWS 在 Exchange 中发送电子邮件提交 以进行传输,但实际发送和随后保存到已发送邮件文件夹是异步完成的。这就是你得不到 id 的原因。传输是实际将电子邮件写入已发送项目文件夹的人,而不是 REST。

如果您确实需要在项目保存到 sentItems 文件夹后查找该项目,请设置类似 PR_SEARCH_KEY 的内容,然后查看已发送项目文件夹并查找该搜索键值。

另请注意,当您保存草稿时,您返回的 ID 将与已发送项目文件夹中的项目 ID 不同,因为文件夹 ID 是项目 ID 的一部分,因此该 ID 不会无论如何都会帮助你。

我不知道您使用的是哪个 rest api 版本(我使用的是 v2.0),但我会尽力解释这个问题。对不起我的英语我进步了。

您有 2 种方式回复消息:即时方式或完整方式。

飞行途中

这是最简单的方法,只需发送一个 post 请求到

https://outlook.office.com/api/v2.0/me/messages/{message_id}/reply

https://outlook.office.com/api/v2.0/me/messages/{message_id}/replyall

和正文

{
  "Comment": "This is your message in plain text or html code"
}

仅此而已。

此方法的问题是您只能发送纯文本或HTML,不能发送附件或其他任何内容。如果这就是您所需要的,那么这是您的最佳选择。

完整的方式

如果您需要发送附件或执行任何其他操作,您需要执行以下 3 个步骤:

1.根据您要回复的消息创建草稿

发送post请求

https://outlook.office.com/api/v2.0/me/messages/{message_id}/createreply

这将为您提供一个 json 对象,保存此草稿的 "Id" 属性 {draft_id} 供以后使用。

2。更新草稿

发送补丁请求

https://outlook.office.com/api/v2.0/me/messages/{draft_id}

和正文

{
  "Body": {
    "ContentType": "HTML or Text",
    "Content": "Your response in plain text or html"
  }
}

或您要更改的任何其他参数。

3。发送草稿

发送post请求

https://outlook.office.com/api/v2.0/me/messages/{draft_id}/send

就是这样。

如果您需要有关此检查的更多信息 https://msdn.microsoft.com/en-us/office/office365/api/mail-rest-operations