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

如何在PeopleCode中规整SendMail()输出的邮件等宽对齐布局?

解决PeopleCode邮件内容等宽对齐问题

你之前用补短横线的方式没效果,核心原因是普通邮件字体是比例宽度字体(比如宋体、Arial),不同字符的宽度不一样(比如"l"和"m"占的宽度差很多),就算字符数凑够了,视觉上还是没法对齐。给你两个靠谱的解决办法:

方法1:用HTML表格布局(最稳妥,邮件兼容性拉满)

邮件客户端对HTML表格的支持普遍很好,把要对齐的内容放进表格里,列的宽度和对齐方式完全可控,根本不会乱。

在PeopleCode里构造HTML格式的邮件内容,示例代码:

// 初始化HTML表格结构
&emailContent = "<html><body><table border='0' cellpadding='3' cellspacing='0'>";
// 表头
&emailContent = &emailContent | "<tr><td style='font-weight:bold; text-align:left;'>流程类型</td><td style='font-weight:bold; text-align:left;'>错误详情</td></tr>";
// 错误数据行
&emailContent = &emailContent | "<tr><td style='text-align:left;'>" | &strPrcsTyp | "</td><td style='text-align:left;'>" | &errorMessage | "</td></tr>";
// 关闭表格和HTML标签
&emailContent = &emailContent | "</table></body></html>";

// 设置邮件为HTML格式
&mail.ContentType = "text/html";
&mail.Text = &emailContent;

如果需要固定列宽,直接给<td>加width="150"这种属性就行,比如<td width="150" style='text-align:left;'>。

方法2:用等宽字体(纯文本风格可选)

如果想保留纯文本的排版感,可以用等宽字体(比如Courier、Consolas),这类字体每个字符宽度完全一致。可以用HTML的<pre>标签包裹内容,或者直接指定字体样式:

示例代码:

// 用<pre>标签自动套用等宽字体
&emailContent = "<html><body><pre style='font-family: Courier, monospace; margin:0;'>";
// 拼接对齐后的内容,现在补短横线/空格就能精准对齐
&emailContent = &emailContent | "流程类型--------------------- 错误详情" | Chr(10);
&emailContent = &emailContent | &strPrcsTyp | Rept("-", 21 - Len(&strPrcsTyp)) | " " | &errorMessage | Chr(10);
// 关闭标签
&emailContent = &emailContent | "</pre></body></html>";

&mail.ContentType = "text/html";
&mail.Text = &emailContent;

优先推荐方法1,因为表格布局在各种邮件客户端(包括Outlook、Gmail)里都不会出问题,方法2适合喜欢纯文本风格的场景,但要注意部分小众邮件客户端可能对字体支持有限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:17:29