You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过Microsoft Graph API修改Office 365邮件标记属性及相关疑问

关于Microsoft Graph API Office 365的两个问题解答

1. 创建非草稿状态的收件箱邮件

从EWS转到Graph API,确实会发现创建邮件的逻辑有些不同。Graph API默认创建的邮件是草稿状态,但你可以通过显式设置属性来生成非草稿的已接收邮件,直接出现在收件箱里。

具体操作是调用POST /users/{user-id}/messages接口,在请求体里必须设置以下关键属性:

  • isDraft: false:明确标记为非草稿
  • receivedDateTime:指定邮件的接收时间
  • senderfrom:设置发件人信息(可以是外部邮箱或内部用户)
  • toRecipients:收件人列表
  • subjectbody:邮件主题和内容

另外要确保你的应用拥有Mail.ReadWrite权限(委托或应用权限都可以)。

举个请求体的示例:

{
  "subject": "测试非草稿收件箱邮件",
  "body": {
    "contentType": "Text",
    "content": "这是直接生成的已接收邮件,不是草稿"
  },
  "toRecipients": [
    {
      "emailAddress": {
        "address": "recipient@example.com",
        "name": "收件人姓名"
      }
    }
  ],
  "sender": {
    "emailAddress": {
      "address": "sender@example.com",
      "name": "发件人姓名"
    }
  },
  "from": {
    "emailAddress": {
      "address": "sender@example.com",
      "name": "发件人姓名"
    }
  },
  "receivedDateTime": "2024-05-20T10:30:00Z",
  "isDraft": false
}

发送这个请求后,邮件会直接出现在指定用户的收件箱中,状态是已接收(非草稿)。

2. 修改邮件标记属性

你说得没错,目前Graph API的Beta版本提供了更全面的邮件标记属性修改能力,稳定版(v1.0)的支持相对有限。下面分几种常见场景给你示例:

场景1:修改已读/未读状态

使用PATCH /users/{user-id}/messages/{message-id}接口,请求体设置isRead属性:

{
  "isRead": true
}

场景2:添加或修改分类(Categories)

同样用PATCH请求,更新categories数组:

{
  "categories": ["重要", "待跟进"]
}

场景3:设置跟进标记(Follow-up Flag)

Beta版本支持followUpFlag属性,可以设置跟进状态、截止时间等:

{
  "followUpFlag": {
    "flagStatus": "Flagged",
    "dueDateTime": {
      "dateTime": "2024-05-25T17:00:00Z",
      "timeZone": "UTC"
    }
  }
}

注意事项:

  • Beta版本的API可能会有变动,微软不建议在生产环境直接使用,如果你的场景要求稳定性,可能需要等待这些功能进入v1.0稳定版;
  • 操作时需要确保应用拥有对应的权限(比如Mail.ReadWrite);
  • 如果是修改批量邮件的标记,也可以使用POST /users/{user-id}/messages/microsoft.graph.update的批量操作接口,效率更高。

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

火山引擎 最新活动