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

如何在Windows服务器用PowerShell读取Exchange Online共享邮箱邮件提取正文?

解决方案:使用Microsoft Graph读取Exchange Online共享邮箱邮件

一、前置准备

  • 安装Microsoft Graph PowerShell模块:
    Install-Module -Name Microsoft.Graph -Force -AllowClobber -Scope CurrentUser
    
  • 在Azure AD中注册应用并配置权限:
    • 新建应用注册,记录客户端ID、租户ID,生成客户端密码(证书认证也可,密码更适合脚本场景)。
    • 添加Microsoft Graph的应用权限:Mail.Read,并完成管理员同意。
    • 给应用分配共享邮箱的访问权限(可选,若全局权限已覆盖则跳过):
      # 需先连接Exchange Online PowerShell
      Add-MailboxPermission -Identity "sharedmailbox@yourdomain.com" -User "应用对象ID" -AccessRights FullAccess
      

二、无交互读取共享邮箱邮件脚本

以下脚本通过应用权限认证,直接读取共享邮箱收件箱邮件并提取正文:

# 配置参数
$clientId = "你的应用客户端ID"
$clientSecret = "你的应用客户端密码"
$tenantId = "你的Azure租户ID"
$sharedMailbox = "sharedmailbox@yourdomain.com"

# 获取Graph访问令牌
$tokenParams = @{
    Uri = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token"
    Method = "POST"
    Body = @{
        grant_type = "client_credentials"
        scope = "https://graph.microsoft.com/.default"
        client_id = $clientId
        client_secret = $clientSecret
    }
}
$token = (Invoke-RestMethod @tokenParams).access_token
$authHeader = @{ Authorization = "Bearer $token" }

# 读取收件箱邮件(示例取前10封,可调整$top参数)
$mailApiUrl = "https://graph.microsoft.com/v1.0/users/$sharedMailbox/mailFolders/Inbox/messages?`$top=10&`$select=subject,body"
$messages = Invoke-RestMethod -Uri $mailApiUrl -Headers $authHeader -Method GET

# 遍历提取正文数据
foreach ($msg in $messages.value) {
    Write-Host "邮件主题: $($msg.subject)"
    Write-Host "邮件正文内容:"
    Write-Host $msg.body.content
    Write-Host "----------------------------------------"
    # 此处可添加正文解析逻辑,比如正则提取特定字段
}

三、补充说明

  • 若需要筛选特定邮件,可在API URL中添加$filter参数,例如按收件日期筛选:
    $mailApiUrl = "https://graph.microsoft.com/v1.0/users/$sharedMailbox/mailFolders/Inbox/messages?`$top=10&`$select=subject,body&`$filter=receivedDateTime ge 2024-01-01T00:00:00Z"
    
  • 若允许交互登录,可简化为使用 delegated 权限:
    Connect-MgGraph -Scopes "Mail.Read"
    $messages = Get-MgUserMailFolderMessage -UserId $sharedMailbox -MailFolderId "Inbox" -Top 10 -Property "subject,body"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 00:32:32