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

如何在PowerShell生成的Outlook邮件HTML表格间添加间距

问题描述

我编写了一段PowerShell脚本,用于从TFS获取缺陷数据并生成包含相关标题的HTML表格。该脚本通过读取XML中的2个查询ID,创建出2个表格后以邮件形式发送。目前脚本可正常运行,但两个表格紧密相连,尝试过<br>、div等方式添加间距均未成功。现仅提供表格相关代码,请求在不修改表格本身结构的前提下,实现两个表格间的间距添加。

相关代码如下:

$HtmlTable = "<table border='1' align='Left' cellpadding='2' cellspacing='0' style='color:black;font-family:arial,helvetica,sans-serif;text-align:left;'>
                <tr style ='font-size:14px;font-weight: normal;background: #FFFFFF'>
                <th align=left><b>Version</b></th>
                <th align=left><b>Severity</b></th>
                <th align=left><b>Title</b></th>
                <th align=left><b>State</b></th>
                </tr>"
$HtmlTable += "<tr style='font-size:14px;background-color:#FFFFFF'>
    <td>" + $CloudVersion + "</td>
    <td>" + $Bug_Severity + "</td>
    <td>" + $Bug_Title + "</td>
    <td>" + $Bug_State + "</td>
    </tr>" 

$HtmlTable += "</table>"

以上代码封装为函数并调用两次,$Htmls变量存储两个表格:

$Htmls += $HtmlTable

以下为展示表格的函数:

function Print ($Htmls) {
    $outlook = [Runtime.InteropServices.Marshal]::GetActiveObject('Outlook.Application')
    $Mail = $Outlook.CreateItem(0)
    foreach ($html in $Htmls) {
    $mail.HTMLBody += $html
    }
    $Mail.Display()
} 
解决方案

由于Outlook采用Word的HTML渲染引擎,对普通HTML元素的支持有限,普通<br>标签在左对齐表格场景下无法产生有效间距,以下几种方法可在不修改表格内部结构的前提下实现间距添加:

方法1:在拼接表格时插入带样式的分隔元素

每次向$Htmls添加表格后,追加一个带有底部外边距的div元素:

# 每次添加表格后加入间距元素,20px可按需调整
$Htmls += $HtmlTable
$Htmls += "<div style='margin-bottom:20px;'></div>"

方法2:在Print函数的循环中插入间距

直接在循环添加表格的逻辑里,每次添加完表格后插入分隔元素,无需修改表格生成代码:

function Print ($Htmls) {
    $outlook = [Runtime.InteropServices.Marshal]::GetActiveObject('Outlook.Application')
    $Mail = $Outlook.CreateItem(0)
    foreach ($html in $Htmls) {
        $mail.HTMLBody += $html
        # 添加底部间距
        $mail.HTMLBody += "<div style='margin-bottom:20px;'></div>"
    }
    $Mail.Display()
}

方法3:用带间距的div包裹每个表格

在生成单个表格的最后一步,将表格包裹在带有底部外边距的div中,不改动表格自身代码:

# 生成表格后包裹div
$HtmlTable += "</table>"
$HtmlTable = "<div style='margin-bottom:20px;'>" + $HtmlTable + "</div>"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 04:46:17