如何使用Graph API直接插入邮件至收件箱(解决草稿显示问题)
解决Graph API插入收件箱邮件仍显示为草稿的问题
你遇到的问题根源在于仅设置isDraft: false不足以让Exchange/Outlook客户端将邮件识别为已发送状态,还需要补充关键的元数据字段。
核心修复要点
- 必须添加
sentDateTime字段:指定邮件的发送时间(需符合ISO 8601格式,例如"2024-05-20T14:30:00Z"),这是客户端判断邮件是否已发送的核心标识。 - 保留
isDraft: false:确保该字段明确标记邮件非草稿状态。 - 可选补充
receivedDateTime:设置与sentDateTime一致或稍晚的时间,模拟邮件接收时间,让邮件属性更贴合常规收件箱邮件。 - 可选设置
isRead:按需控制邮件是否显示为已读状态。
修改后的请求体示例
{ "body": { "contentType": "html", "content": "<a href='https://google.com'>test</a>" }, "sender": { "emailAddress": { "name": "test", "address": "someuser@test2.com" } }, "from": { "emailAddress": { "name": "test", "address": "someuser@test2.com" } }, "toRecipients": [ { "emailAddress": { "name": "Some User", "address": "someuser@test.com" } } ], "isDraft": false, "sentDateTime": "2024-05-20T14:30:00Z", "receivedDateTime": "2024-05-20T14:30:05Z", "isRead": false }
原理说明
Outlook等客户端判断邮件状态时,不仅依赖isDraft字段,还会校验sentDateTime是否存在。如果缺少该字段,即使isDraft设为false,客户端仍会将其判定为未完成发送的草稿。补充这些元数据后,邮件就能正常显示为已发送的收件箱邮件。
内容的提问来源于stack exchange,提问作者BigDataFiles
相关产品推荐
相关产品推荐

