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

如何使用Python通过邮件发送PrettyTable表格

如何通过邮件发送PrettyTable生成的表格

我用Python创建了一个PrettyTable表格,需要将表格的输出内容通过邮件发送,初始实现代码如下:

env = "Dev"
cost = 25.3698
line = [env, "${:,.2f}".format(cost)]
totalcostofenv = PrettyTable(['Environment', 'Cost'])
totalcostofenv.add_row(line)

print(totalcostofenv)

经过尝试,我已经找到完整解决方案,实现代码如下:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import os
from prettytable import PrettyTable

env = "Dev"
cost = 25.3698
line = [env, "${:,.2f}".format(cost)]
totalcostofenv = PrettyTable(['Environment', 'Cost'])
totalcostofenv.add_row(line)

print(totalcostofenv)
print(totalcostofenv.get_html_string())

def trigger_email():
    # 获取表格的HTML字符串
    my_message = totalcostofenv.get_html_string()
    # 纯文本版本内容
    text = "Hi!"
    # HTML邮件模板,添加表格样式
    html = """\
    <html>
        <head>
        <style>
            table, th, td {
                border: 1px solid black;
                border-collapse: collapse;
            }
            th, td {
                padding: 5px;
                text-align: left;    
            }    
        </style>
        </head>
    <body>
    <p>环境成本使用情况<br>
       %s
    </p>
    </body>
    </html>
    """ % (my_message)

    # 创建纯文本和HTML邮件部分
    part1 = MIMEText(text, 'plain')
    part2 = MIMEText(html, 'html')

    # 组装邮件
    msg = MIMEMultipart()
    from_addr = "发件人邮箱"
    # 从环境变量获取邮箱密码,避免硬编码
    mail_password = os.environ.get('gmail-pass')
    to_addr = "收件人邮箱"
    msg.attach(part1)
    msg.attach(part2)
    
    try:
        # 连接Gmail的SMTP服务器发送邮件
        smtp = smtplib.SMTP('smtp.gmail.com',587)
        smtp.starttls()
        smtp.login(from_addr , mail_password) 
        smtp.sendmail(from_addr , to_addr , msg.as_string())
        print('邮件发送成功')
    except:
        print('邮件发送失败')

trigger_email()

关键说明

  • 核心逻辑:利用PrettyTable的get_html_string()方法,将控制台格式的表格转换为HTML字符串,实现邮件中表格的正常渲染。
  • 样式优化:在HTML模板中添加CSS样式,给表格设置边框、内边距和文本对齐,让邮件里的表格更规整美观。
  • 兼容性处理:通过MIMEMultipart同时添加纯文本和HTML版本内容,适配不同邮件客户端的显示需求。
  • 安全优化:从环境变量读取邮箱密码,避免密码硬编码在代码中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:05:22