如何用Microsoft Graph API转发邮件并自定义主题?及IMAP认证失败问题
解决方案:自定义转发邮件主题
替代方案:通过草稿邮件实现自定义主题
Graph API原生的forward接口确实不支持修改转发邮件的主题,你可以改用创建转发草稿→修改主题→发送草稿的流程来实现需求,具体步骤如下:
创建转发草稿
调用POST /me/messages/{message-id}/createForward接口,传入收件人(toRecipients)和备注(comment)参数,生成包含原邮件内容的草稿邮件。修改草稿主题
获取上一步返回的草稿ID,调用PATCH /me/messages/{draft-id}接口,在请求体中指定自定义的subject字段。发送草稿邮件
调用POST /me/messages/{draft-id}/send接口,完成最终的邮件发送。
Python示例代码
import requests import json # 替换为实际的访问令牌和原邮件ID access_token = "YOUR_ACCESS_TOKEN" original_msg_id = "TARGET_MESSAGE_ID" # 1. 创建转发草稿 create_draft_url = f"https://graph.microsoft.com/v1.0/me/messages/{original_msg_id}/createForward" headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" } draft_payload = { "toRecipients": [ { "emailAddress": { "address": "recipient@example.com" } } ], "comment": "自定义转发备注" } draft_res = requests.post(create_draft_url, headers=headers, json=draft_payload) draft_msg = draft_res.json() draft_id = draft_msg["id"] # 2. 修改草稿主题 update_draft_url = f"https://graph.microsoft.com/v1.0/me/messages/{draft_id}" update_payload = { "subject": "[自定义前缀] 原邮件主题内容" } requests.patch(update_draft_url, headers=headers, json=update_payload) # 3. 发送草稿 send_draft_url = f"https://graph.microsoft.com/v1.0/me/messages/{draft_id}/send" requests.post(send_draft_url, headers=headers)
注意事项
- 确保你的应用已申请
Mail.Send和Mail.ReadWrite权限,否则会触发权限不足的错误。 - 该流程会完整保留原邮件的格式、附件等内容,同时支持完全自定义转发主题。
内容的提问来源于stack exchange,提问作者Javier Perez
相关产品推荐
相关产品推荐

