发送电子邮件时从 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。更新草稿
向
发送补丁请求
和正文
{
"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
我正在尝试使用 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。更新草稿
向
发送补丁请求和正文
{
"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