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

使用Python按磁盘使用率条件为邮件HTML表格文本设置颜色

修复方案

核心问题说明

你当前的代码存在3个影响效果的问题:

  1. 语法缩进错误:给使用率添加红色样式的代码行没有缩进在if row['Usage in %'] >= 80:判断逻辑下,条件判断根本不会执行
  2. HTML标签被转义:tabulate生成HTML时默认会转义内容中的HTML特殊字符,你插入的样式标签会被转义成纯文本,无法作为样式生效
  3. 标签使用不合理:<p>是块级元素,自带默认上下边距,放入表格单元格会撑高行高,破坏表格布局

修复后完整代码

import smtplib
import pandas as pd
from csv import DictReader
from tabulate import tabulate
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

me = 'noreply@automationtest.com'
password = '你的邮箱授权码'
server = '对应SMTP服务器地址'
you = 'email@someautomation.com'

text = """
{table}
"""

html = """
<html>
<head>
<style> 
  table, th, td {{ border: 1px solid black; border-collapse: collapse; }}
  th, td {{ padding: 5px; }}
</style>
</head>
<body>
<p style="font-family:verdana">Hi,</p>
<p style="font-family:verdana">sometext</p>
{table}
<p style="font-family:verdana">sometext</p>
<p style="font-family:verdana">Regards</p>
<p style="font-family:verdana">someme</p>
</body>
</html>
""" 

with open('files/file.csv') as input_file:
    reader = DictReader(input_file)
    data = list(reader)
    for row in data:
        row['Usage in %'] = pd.to_numeric(row['Usage in %'])
        if row['Usage in %'] >= 80:
            # 改用span行内标签,不破坏表格布局
            row['Usage in %'] = f"<span style='color:red'>{row['Usage in %']}</span>"


text = text.format(table=tabulate(data, headers="keys", tablefmt="grid"))
# 新增safe_mode=False禁止转义HTML内容,保证样式生效
html = html.format(table=tabulate(data, headers="keys", tablefmt="unsafehtml", safe_mode=False))
message = MIMEMultipart("alternative", None, [MIMEText(text), MIMEText(html,'html')])

message['From'] = me
message['To'] = you
server = smtplib.SMTP(server)
server.ehlo()
server.starttls()
server.login(me, password)
server.sendmail(me, you, message.as_string())
server.quit()

效果验证

修改后表格边框会按照你定义的样式正常显示,磁盘使用率超过80%的单元格内容会自动变为红色,完全符合预期效果。

内容的提问来源于stack exchange,提问作者ayuuk ja'ay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:06:05