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

如何修改EWS代码向Microsoft Unified Group添加邮件?

向Microsoft 365 Unified Group写入邮件的解决方案

EWS实现的可行调整方案

你遇到的“Only one access mode header may be specified”错误,本质是EWS不允许同时设置多个身份模拟头(Exchange Impersonation/ConnectingSID)。针对Unified Group的邮件写入需求,无需同时模拟普通用户和组邮箱,正确调整方式如下:

  • 权限配置:
    • 个人OAuth账号:确保该用户是目标Unified Group的成员(默认组成员具备访问组邮箱的权限)。
    • 服务账号:需为账号申请EWS的FullAccess应用权限,或针对目标组邮箱的特定访问权限。
  • SOAP请求调整:
    移除多余的Exchange Impersonation头,直接在CreateItem请求中指定目标组邮箱的SMTP地址作为操作对象。核心SOAP片段示例:
    <CreateItem MessageDisposition="SaveOnly">
      <Items>
        <Message>
          <Subject>测试组邮件</Subject>
          <Body BodyType="HTML">这是发送到Unified Group的测试邮件</Body>
          <ToRecipients>
            <Mailbox>
              <EmailAddress>group-smpt@contoso.com</EmailAddress>
            </Mailbox>
          </ToRecipients>
        </Message>
      </Items>
      <SavedItemFolderId>
        <DistinguishedFolderId Id="inbox">
          <Mailbox>
            <EmailAddress>group-smpt@contoso.com</EmailAddress>
          </Mailbox>
        </DistinguishedFolderId>
      </SavedItemFolderId>
    </CreateItem>
    
    注意:OAuth Token需包含对该组邮箱的访问权限,服务账号场景下需确保Token的权限范围覆盖EWS及目标组。

改用Graph API的优势与实现示例

Microsoft已将Graph API作为M365服务的首选访问方式,相较于EWS,Graph API对Unified Group的支持更原生、权限模型更清晰,且长期维护更有保障。核心实现步骤如下:

权限配置

  • 委托权限(个人账号):Mail.Send或MailboxSettings.ReadWrite
  • 应用权限(服务账号):Mail.Send.Application或Mail.ReadWrite(需管理员同意)

REST请求示例(创建邮件到组收件箱)

发送POST请求到Graph API端点:https://graph.microsoft.com/v1.0/groups/{group-id}/mailFolders/inbox/messages

请求体示例:

{
  "subject": "Graph测试组邮件",
  "body": {
    "contentType": "HTML",
    "content": "这是通过Graph API写入Unified Group收件箱的邮件"
  },
  "toRecipients": [
    {
      "emailAddress": {
        "address": "group-smpt@contoso.com"
      }
    }
  ]
}

认证方式:在请求头中携带OAuth 2.0 Token:Authorization: Bearer {your-access-token}

补充说明

  • 可通过组的SMTP地址调用https://graph.microsoft.com/v1.0/groups?$filter=mail eq 'group-smpt@contoso.com'获取group-id。
  • 若需直接发送邮件而非保存到收件箱,可调用https://graph.microsoft.com/v1.0/users/{user-id}/sendMail,将组邮箱作为收件人。

总结建议

  • 若仅需快速适配现有EWS代码,可按上述调整SOAP请求和权限配置,无需添加多个身份模拟头。
  • 若项目需长期维护或涉及更多M365 Group相关操作,强烈建议迁移到Graph API,其对Unified Group的支持更完善,且Microsoft后续的功能更新将优先覆盖Graph API。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:33:27