使用 Python 根据磁盘使用情况为 HTML table 电子邮件正文的文本着色

Give color to the text of HTML table email body based on disk usage condition using Python

我正在使用 python 在电子邮件正文中发送 html table。 html table 包含磁盘使用情况,当磁盘使用率超过 80% 时,我需要将文本颜色转换为红色。到目前为止,我已经尝试过 。但是,这使用 excel 并且不添加在我的情况下我想保留的边框。

这是我正在使用的代码,可以在不为文本着色的情况下获取电子邮件:

me = 'noreply@automationtest.com'

server = 'some smtp server'
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:
      row['Usage in %'] = "<p style='color:red'>%s</p>"%row['Usage in %']


text = text.format(table=tabulate(data, headers="firstrow", tablefmt="grid"))

html = html.format(table=tabulate(data, headers="firstrow", tablefmt="unsafehtml"))
message = MIMEMultipart("alternative", None, [MIMEText(text), MIMEText(html,'html')])
print(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()

这是我在电子邮件中得到的输出 预期产出

非常感谢任何帮助。

从 csv 读取数据后循环遍历数据,如果磁盘使用率大于 80

,则将其更改为 <p style='color:red'>Value</p>

然后在表格中将 tablefmt 参数更改为 "unsafehtml"

这应该输出包含您自己的样式的 html。

下面的代码输出红色的“月亮”来给你一个概念证明:

from tabulate import tabulate
table = [["Sun",696000,1989100000],["Earth",6371,5973.6],
         ["<p style='color:red'>Moon</p>",1737,73.5], 
         ["Mars",3390,641.85]]
print(tabulate(table, tablefmt='unsafehtml'))