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

时间:2016-10-03 22:21:03

标签: office365-restapi

我正在尝试使用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中运行它。

2 个答案:

答案 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。更新草稿

发送补丁请求
  

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。发送草稿

发送帖子请求
  

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

就是这样。

如果您需要更多信息,请查看https://msdn.microsoft.com/en-us/office/office365/api/mail-rest-operations