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

如何通过电子邮件发送Python DataFrame,避免表格显示为原始HTML代码?

问题原因

你当前的邮件发送逻辑将HTML内容作为纯文本直接发送,未指定邮件内容的MIME类型为HTML,因此邮件客户端不会对HTML标签进行渲染,直接展示原始代码。

解决方案

需要使用Python标准库的email模块构造标准HTML格式邮件,修改后的完整代码如下:

import smtplib
import ssl
from email.mime.text import MIMEText
from pretty_html_table import build_table

# 生成表格HTML
email_df = build_table(df, "blue_light")
# 构造邮件正文
message_content = f"""
Dear mister X, 

Please have a look at these numbers. There is a big change in revenue since {period_1} compared to {period_2}: 

{email_df}
"""
# 构造HTML类型的邮件对象,指定内容类型为html
msg = MIMEText(message_content, 'html', 'utf-8')
# 单独设置邮件头信息
msg['Subject'] = f"blablabla - {today}"
msg['From'] = sender_email
msg['To'] = receiver_email

context = ssl.create_default_context()
with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
    server.login(sender_email, password)
    # 传入格式化后的MIME邮件内容
    server.sendmail(sender_email, receiver_email, msg.as_string())

补充说明

  • 不要将Subject主题直接拼接到邮件正文中,需通过MIME对象的头信息单独设置,避免被识别为正文内容
  • MIMEText的第二个参数指定为html,明确告知邮件客户端该内容需要以HTML格式渲染,表格会自动正常展示
  • 如果需要同时支持纯文本和HTML两种格式的邮件,可以改用MIMEMultipart('alternative'),同时添加纯文本和HTML两个版本的MIMEText对象,兼容不支持HTML的邮件客户端

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:15:03