You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Microsoft Graph API发邮件返回空,无法获取消息ID与会话ID

解决Office365 Graph API sendmail端点返回空Message对象的问题

问题原因

Graph API的POST /users/{id}/sendmail端点默认不返回发送后的邮件实体,只会返回202 Accepted状态码,所以即使设置了setReturnType(Message::class),得到的也是空属性的Message对象。

解决方案

添加Prefer: return=representation请求头,强制API返回发送完成后的邮件对象,包含需要的messageId和conversationId。

修改后的代码如下:

$this->graphSdk->createRequest("POST", "/users/" . $this->config['from_email'] . "/sendmail")
    ->addHeaders(['Prefer' => 'return=representation'])
    ->attachBody($this->getMessageBody($message))
    ->setReturnType(Message::class)
    ->execute()

补充说明

  • 添加该请求头后,API会返回201 Created状态码,同时返回完整的邮件实体数据,可直接从返回的Message对象中调用getMessageId()和getConversationId()获取目标ID。
  • 你提到的Laravel监听器中Swift Message对象的ID无效是正常情况:该ID是本地SMTP客户端生成的临时标识,Office365会重新分配平台唯一的Message ID,必须通过Graph API返回的结果获取官方有效ID。

内容的提问来源于stack exchange,提问作者Jaquarh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 13:45:07