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

使用Microsoft Graph API发送HTML格式邮件异常的问题求助

解决Microsoft Graph API发送HTML邮件格式异常问题

问题分析

你遇到的格式异常核心原因是手动拼接JSON字符串时未正确转义HTML内容中的特殊字符,导致Graph API接收到的JSON格式不合法,解析后邮件结构错乱。之前用Send-MailMessage正常是因为该cmdlet会自动处理HTML内容的转义和格式补全,而Graph API需要严格符合JSON规范的请求体。

解决方案

放弃手动拼接JSON的方式,改用PowerShell对象构建邮件内容,再通过ConvertTo-Json生成标准JSON,自动处理特殊字符转义。同时确保HTML内容结构完整。

修改后的代码示例

# 构建邮件对象
$mailMessage = [PSCustomObject]@{
    message = [PSCustomObject]@{
        subject      = $subData
        body         = [PSCustomObject]@{
            contentType = 'html'
            content     = $bodyData
        }
        toRecipients = @(
            [PSCustomObject]@{
                emailAddress = [PSCustomObject]@{
                    address = $MailtTo
                }
            }
        )
    }
}

# 转换为JSON(Depth参数确保HTML内容完整序列化,可根据实际嵌套深度调整)
$Body = $mailMessage | ConvertTo-Json -Depth 10

# 发送邮件
$sendmail = Invoke-RestMethod -Headers $Headers -URI "https://graph.microsoft.com/v1.0/users/$MailFrom/sendMail" -Body $Body -Method POST -ContentType "application/json"

额外检查项

  • 确保$bodyData中的HTML是完整结构,包含<html>、<body>标签,示例结构如下:
    <html>
      <body>
        <h1>邮件标题</h1>
        <p>正文段落内容</p>
        <ul>
          <li>列表项1</li>
          <li>列表项2</li>
        </ul>
      </body>
    </html>
    
  • 如果$bodyData从文件读取,直接使用Get-Content -Path "你的HTML文件路径" -Raw获取原始内容即可,避免手动修改导致格式破坏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:10:37