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

使用Microsoft Graph创建带非草稿ItemAttachment的邮件遇阻求助

解决Microsoft Graph创建非草稿邮件ItemAttachment仍为草稿的问题

当你通过POST /me/messages搭配SingleValueExtendedProperties创建非草稿主邮件时,ItemAttachment默认会以草稿状态生成——这是因为附件的状态属性不会自动继承主邮件的配置,必须单独为附件设置对应的扩展属性和核心字段。

以下是可行的解决方案:

1. 嵌套配置附件的SingleValueExtendedProperties

在创建主邮件的请求体中,直接为ItemAttachment的item节点添加状态控制的扩展属性,关键属性包括:

  • PidTagMessageFlags(0x0E07):控制邮件的发送/草稿状态,设为24(对应十六进制0x00000018,即MSGFLAG_SENT+MSGFLAG_READ,标记为已发送且已读)
  • PidTagMessageStatus(0x0E17):设为1(对应MESSAGESTATUS_NORMAL,表示正常已收发状态)

示例请求体:

POST /me/messages
{
  "subject": "测试带非草稿附件的邮件",
  "body": {
    "contentType": "HTML",
    "content": "<p>这是一封包含非草稿ItemAttachment的测试邮件</p>"
  },
  "from": {
    "emailAddress": {
      "address": "sender@example.com"
    }
  },
  "toRecipients": [
    {
      "emailAddress": {
        "address": "recipient@example.com"
      }
    }
  ],
  "sentDateTime": "2024-05-20T09:30:00Z",
  "singleValueExtendedProperties": [
    {
      "id": "Integer 0x0E07",
      "value": "24"
    },
    {
      "id": "Integer 0x0E17",
      "value": "1"
    }
  ],
  "attachments": [
    {
      "@odata.type": "#microsoft.graph.itemAttachment",
      "name": "附件邮件",
      "item": {
        "subject": "附件邮件主题",
        "body": {
          "contentType": "HTML",
          "content": "<p>这是附件邮件的内容</p>"
        },
        "from": {
          "emailAddress": {
            "address": "sender@example.com"
          }
        },
        "toRecipients": [
          {
            "emailAddress": {
              "address": "attached-recipient@example.com"
            }
          }
        ],
        "sentDateTime": "2024-05-20T09:25:00Z",
        "singleValueExtendedProperties": [
          {
            "id": "Integer 0x0E07",
            "value": "24"
          },
          {
            "id": "Integer 0x0E17",
            "value": "1"
          }
        ]
      }
    }
  ]
}

2. 完善附件的核心收发属性

  • 必须为附件的item节点指定from、toRecipients等收发人信息,模拟真实已收发邮件的完整结构,避免Graph默认将其判定为草稿。
  • 添加sentDateTime字段并设置为过去的时间,进一步明确附件的已发送状态。

3. 避免拆分创建流程

不要先创建主邮件,再通过POST /me/messages/{id}/attachments单独添加ItemAttachment。这种拆分方式下,附件更容易被标记为草稿,尽量在创建主邮件时一次性完成所有配置。

注意点

  • 扩展属性的ID格式必须准确,整数类型属性使用Integer 0xXXXX的格式。
  • 若需要不同的状态(如已发送未读),可调整PidTagMessageFlags的取值:仅已发送设为8(0x00000008),仅已读设为16(0x00000010)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 09:48:17