Microsoft Graph如何无需客户预先回复即可发送同线程邮件
可行解决方案
方案1:通过创建回复草稿后修改收件人发送(操作最简单)
该方案利用现有回复接口自动生成线程头的能力,同时规避直接调用reply接口强制回复发件人的限制:
- 成功发送首封邮件后,记录该邮件的ID
- 调用
/me/messages/{首封邮件ID}/createReply生成回复草稿,系统会自动为草稿添加正确的In-Reply-To和References头,确保线程归并 - 调用PATCH接口修改该草稿的
toRecipients参数,将默认的收件人(即你自己的邮箱)替换为目标客户邮箱,同时可自定义邮件正文、主题等内容 - 调用
/me/messages/{草稿ID}/send发送草稿即可
方案2:为新建草稿手动设置线程属性扩展字段
如果你不想基于原有邮件生成回复草稿,也可以通过设置MAPI扩展属性实现自定义线程头:
- 首封邮件发送成功后,记录该邮件的
internetMessageId属性值 - 调用接口创建全新的邮件草稿,指定收件人为目标客户,填写好邮件主题、正文
- 调用PATCH接口为草稿添加两个单值扩展属性:
SingleValueExtendedProperties中添加属性ID为String 0x1042,值为记录的首封邮件internetMessageId(对应In-Reply-To头)- 添加属性ID为
String 0x1039,值为记录的首封邮件internetMessageId(对应References头)
- 发送修改后的草稿即可
方案3:提交自定义MIME格式邮件
通过sendMail接口直接提交自定义MIME内容,完全自由控制邮件头:
- 首封邮件发送成功后,记录该邮件的
internetMessageId属性值 - 构造完整MIME邮件,手动添加
In-Reply-To和References头,值为记录的internetMessageId,同时指定正确的发件人、收件人、主题、正文 - 将MIME内容转换为Base64编码
- 调用
/me/sendMail接口提交编码后的内容即可
为了兼容所有邮件客户端的线程归并逻辑,建议跟进邮件的主题与首封邮件主题保持一致,或仅在前方添加
Re:前缀,不要完全修改主题内容。
内容的提问来源于stack exchange,提问作者Jonni Kim
相关产品推荐
相关产品推荐

