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

如何通过Gmail发送以可视化表格展示Pandas DataFrame的邮件?

解决方案:通过Gmail发送带可视化Pandas DataFrame表格的邮件

你现在的代码核心问题是没有将邮件标记为HTML格式,导致邮件客户端把df.to_html()生成的代码当成纯文本显示,不会渲染成你想要的表格样式。下面是完整的可行方案,能让DataFrame以美观的可视化表格形式出现在邮件里:

完整代码示例

import pandas as pd
import smtplib
from email.mime.text import MIMEText

# 1. 构建测试用的DataFrame(和你的示例一致)
df_1 = [1,2,3,5]
df_2 = [10,20,30,50]
df_test = pd.concat([pd.DataFrame(df_1), pd.DataFrame(df_2)], axis=1)
df_test.columns = ['数值1', '数值2']  # 给列添加名称,让表格更清晰

# 2. 将DataFrame转为带样式的HTML表格
# 添加边框、内边距等属性,让表格更接近你期望的样式
html_table = df_test.to_html(border=1, cellpadding=4, index=False)

# 3. 构建完整的HTML邮件内容(可自定义标题、说明文字)
html_content = f"""
<html>
  <body>
    <h3>测试数据表格</h3>
    {html_table}
  </body>
</html>
"""

# 4. 配置邮件参数
fromaddr = "你的Gmail邮箱地址"
toaddr = "收件人邮箱地址"
password = "你的Gmail应用专用密码"  # 重要提示:开启2FA后需用应用专用密码,而非普通登录密码

# 5. 创建MIMEText对象,明确指定为HTML格式
msg = MIMEText(html_content, 'html', 'utf-8')
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "包含Pandas可视化表格的测试邮件"

# 6. 发送邮件
try:
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login(fromaddr, password)
    server.send_message(msg)
    print("邮件发送成功!")
except Exception as e:
    print(f"发送失败:{e}")
finally:
    server.quit()

关键细节说明

  • HTML格式标记:通过MIMEText(html_content, 'html', 'utf-8')明确告知邮件客户端这是HTML内容,这样才会自动渲染表格样式。
  • 表格样式优化:to_html()的参数中,border=1添加表格边框,cellpadding=4增加单元格内边距,index=False隐藏行索引,让表格更整洁易读。
  • Gmail认证注意事项:
    • 如果你的Gmail账号开启了两步验证(2FA),必须使用应用专用密码登录,不能用普通密码。你可以在Google账号的「安全」设置中生成应用专用密码。
    • 若未开启2FA,需先在Google账号设置中允许「不太安全的应用访问」(不推荐,建议开启2FA使用应用密码更安全)。

运行这段代码后,收件人就能收到带有清晰可视化表格的邮件啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:36:27