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

Azure自动化Runbook如何添加邮件端点以发送执行结果?

解答:Azure中邮件端点配置及Runbook结果发送方案

一、Azure中邮件端点的添加位置

Azure里实现邮件发送端点主要有两种常用方案:

1. Azure逻辑应用(Logic Apps)

这是最便捷的方式,自带成熟的邮件连接器:

  • 登录Azure门户,搜索“逻辑应用”,创建消费型或标准型逻辑应用(按需选择)。
  • 在逻辑应用设计器中,添加**“当收到HTTP请求时”**触发器,生成可被Runbook调用的HTTP端点。
  • 接着添加邮件发送动作:选择Office 365 Outlook、SendGrid或SMTP等连接器,配置收件人、主题等参数,正文可设置为动态内容,用于接收Runbook传来的VM列表数据。
  • 保存后复制触发器生成的HTTP URL,这就是你的邮件发送端点。

2. Azure通信服务(Azure Communication Services)

适合需要高度自定义邮件服务的场景:

  • 在Azure门户创建“通信服务”资源。
  • 进入资源的“电子邮件”选项卡,配置并验证邮件域名,创建电子邮件发送端点。
  • 可通过REST API或SDK调用该端点发送邮件,Runbook中用PowerShell/Python代码对接即可。

二、通过邮件端点发送Runbook执行结果

完全可以实现,以下是两种方案的集成步骤:

方案1:逻辑应用+PowerShell Runbook示例

  1. 修改现有Runbook,在获取VM列表的代码后添加调用逻辑应用端点的代码:
# 获取运行中VM列表
$runningVMs = Get-AzVM -Status | Where-Object { $_.PowerState -eq 'VM running' } | Select-Object Name, ResourceGroupName, Location

# 转换为HTML格式方便邮件展示
$htmlBody = "<h3>运行中的VM列表</h3><table><tr><th>VM名称</th><th>资源组</th><th>区域</th></tr>"
foreach ($vm in $runningVMs) {
    $htmlBody += "<tr><td>$($vm.Name)</td><td>$($vm.ResourceGroupName)</td><td>$($vm.Location)</td></tr>"
}
$htmlBody += "</table>"

# 调用逻辑应用端点发送邮件
$logicAppEndpoint = "https://prod-xx.westus.logic.azure.com:443/workflows/xxxx/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=xxxx"
$requestBody = @{
    Subject = "Azure运行中VM列表报告"
    Body = $htmlBody
    To = "your-email@example.com"
} | ConvertTo-Json

Invoke-RestMethod -Uri $logicAppEndpoint -Method Post -Body $requestBody -ContentType "application/json"
  1. 在逻辑应用的邮件发送动作中,将参数绑定为HTTP请求传入的动态内容(比如Subject、Body),即可自动发送Runbook生成的VM列表。

方案2:Azure通信服务+PowerShell Runbook示例

如果用ACS,可直接调用其邮件API:

# ACS配置参数
$acsEndpoint = "https://<你的ACS资源名>.communication.azure.com/emails:send?api-version=2023-03-31"
$accessKey = "<你的ACS访问密钥>"
$fromAddr = "sender@已验证的域名.com"
$toAddr = "recipient@example.com"

# 构建邮件内容
$emailContent = @{
    senderAddress = $fromAddr
    content = @{
        subject = "Azure运行中VM列表报告"
        html = $htmlBody # 前面生成的VM列表HTML内容
    }
    recipients = @{
        to = @(
            @{
                address = $toAddr
                displayName = "收件人名称"
            }
        )
    }
} | ConvertTo-Json

# 生成ACS API所需的HMAC签名(需按Azure文档规则生成,或使用SDK简化)
$headers = @{
    "Authorization" = "HMAC-SHA256 SignedHeaders=date;host;x-ms-content-sha256&Signature=<生成的签名>"
    "x-ms-content-sha256" = (Get-FileHash -InputStream ([System.IO.MemoryStream]::new([System.Text.Encoding]::UTF8.GetBytes($emailContent))) -Algorithm SHA256).Hash.ToLower()
    "Date" = (Get-Date -Format r)
    "Host" = "<你的ACS资源名>.communication.azure.com"
}

# 调用API发送邮件
Invoke-RestMethod -Uri $acsEndpoint -Method Post -Body $emailContent -Headers $headers -ContentType "application/json"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 00:02:22