我正在尝试使用Microsoft Rest API代表我们的用户发送电子邮件。当我创建一条消息作为草稿时,我会收到一个ID,我可以在将来的编辑,删除,查看完整对话(发送后)等请求中使用该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中重新创建它,但我使用node-outlook包在Nodejs中运行它。
答案 0 :(得分:0)
通过REST和EWS在Exchange中的电子邮件已提交进行传输,但实际发送和后续保存到已发送邮件文件夹是异步完成的。这就是为什么你没有得到身份证明。传输是实际将电子邮件写入已发送邮件文件夹的人,而不是REST。
如果您确实需要在将项目保存到sentItems文件夹后找到该项目,请设置类似PR_SEARCH_KEY的内容,然后查看已发送项目文件夹并查找该搜索键值。
另请注意,当您保存草稿时,您获取的ID将与已发送项目文件夹中的项目ID不同,因为文件夹ID是项目ID的一部分,因此ID不会#39 ;无论如何都要帮助你。
答案 1 :(得分:0)
我不知道你正在使用哪个休息api版本(我正在使用v2.0),但我会尝试解释这个问题。对不起我的英语我前进。
您有2种方式回复邮件:动态方式或完整方式。
简单方法,只需向
发送帖子请求即可https://outlook.office.com/api/v2.0/me/messages/ {MESSAGE_ID} /应答
或
https://outlook.office.com/api/v2.0/me/messages/ {MESSAGE_ID} /全部答复
和身体
{
"Comment": "This is your message in plain text or html code"
}
就是这样。
这个方法的问题是你只能发送纯文本或HTML,没有附件或其他任何东西。如果这就是你需要的全部选择。
如果您需要发送附件或执行任何其他操作,您需要执行以下3个步骤:
1。从您要回复的邮件中创建草稿
向
发送帖子请求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。发送草稿
向
发送帖子请求https://outlook.office.com/api/v2.0/me/messages/ {draft_id} /发送
就是这样。
如果您需要更多信息,请查看https://msdn.microsoft.com/en-us/office/office365/api/mail-rest-operations