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

Shell脚本中用sendemail发送双SQL结果HTML表格邮件的问题

解决Shell脚本中sendemail发送双SQL表格邮件排版问题

核心问题排查方向

大多数情况是HTML结构不规范、sendemail未正确指定HTML格式,或SQL转HTML时的格式错误导致的,按以下步骤逐一修复:


1. 强制sendemail按HTML解析邮件

发送时必须添加-o content-type=text/html参数,否则邮件会把HTML代码当纯文本显示,或解析错乱。如果有中文,再加-o message-charset=UTF-8避免乱码:

sendemail ... -o content-type=text/html -o message-charset=UTF-8 ...

2. 确保两个表格的HTML结构独立且完整

每个SQL查询的输出必须用完整的<table>标签包裹,且两个表格之间加分隔元素(比如换行标签<br>、标题或间距样式),避免挤在一起。

示例:SQL转HTML表格的处理逻辑

假设用MySQL查询,用sed把制表符分隔的查询结果转成HTML表格:

# 处理第一个SQL结果
sql1_table=$(mysql -u 用户名 -p'密码' -D 数据库名 -e "SELECT 列1,列2 FROM 表1" | \
sed '1s/^/<tr><th>/; s/\t/<\/th><th>/g; s/$/<\/th><\/tr>/; 2,$s/^/<tr><td>/; s/\t/<\/td><td>/g; s/$/<\/td><\/tr>/')
sql1_html="<table border='1' cellpadding='4' cellspacing='0'>$sql1_table</table>"

# 处理第二个SQL结果,逻辑同上
sql2_table=$(mysql -u 用户名 -p'密码' -D 数据库名 -e "SELECT 列3,列4 FROM 表2" | \
sed '1s/^/<tr><th>/; s/\t/<\/th><th>/g; s/$/<\/th><\/tr>/; 2,$s/^/<tr><td>/; s/\t/<\/td><td>/g; s/$/<\/td><\/tr>/')
sql2_html="<table border='1' cellpadding='4' cellspacing='0'>$sql2_table</table>"

3. 组装规范的完整HTML邮件内容

给邮件加基础样式,让表格排版更清晰,同时用标题区分两个查询结果:

full_html="
<html>
<head>
<meta charset='UTF-8'>
<style>
  table { border-collapse: collapse; margin: 15px 0; width: 90%; }
  th { background: #f5f5f5; padding: 8px; border: 1px solid #ddd; }
  td { padding: 8px; border: 1px solid #ddd; }
  h3 { color: #333; margin-top: 20px; }
</style>
</head>
<body>
<h3>第一组查询结果</h3>
$sql1_html
<h3>第二组查询结果</h3>
$sql2_html
</body>
</html>
"

4. 完整的sendemail发送命令

把上面的变量整合到发送命令中:

sendemail -f 发件人邮箱 -t 收件人邮箱 \
-s smtp服务器地址:端口 -o tls=yes \
-u "SQL查询结果汇总" -o content-type=text/html -o message-charset=UTF-8 \
-m "$full_html" \
-xu SMTP用户名 -xp SMTP密码

常见坑点修复

  • 如果SQL输出的分隔符不是制表符(比如逗号),要把sed里的s/\t/...改成对应分隔符,比如s/,/...。
  • 转义SQL结果中的特殊字符:如果查询结果包含<、>、&,要提前用sed转成HTML实体,避免破坏结构:
    sed 's/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g'
    
  • 确保sendemail版本支持HTML格式,部分旧版本可能需要额外参数,可通过sendemail --help查看。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 21:43:31