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

Python发送邮件时如何调整pandas DataFrame表格字体大小

解决方案

表格字体显示偏小的核心原因是df.to_html()生成的默认表格标签未指定字体大小样式,会直接使用邮件客户端的默认小尺寸字体,同时你现有代码存在两处HTML结构错误,会干扰样式正常渲染:

  • <h1>标签错误放置在<body>标签外部
  • 包裹表格的<p>标签被设置了width:50px;height:50px的固定极小尺寸,会严重压缩内部内容

先修正上述结构问题,再通过以下两种方式调整表格字体大小即可。


方案1:全局添加表格CSS样式(实现最简单)

直接在HTML的head部分添加针对表格的全局样式,给表格、表头、单元格统一设置字体大小,主流邮件客户端对这类基础CSS的支持度很高。
修正后的完整代码示例:

html = """\
<html>
  <head>
    <style>
      /* 表格整体字体大小可自行调整数值,数值越大字体越大 */
      table {border-collapse: collapse; width: 100%; font-size: 16px;}
      th, td {border: 1px solid #dddddd; padding: 8px; text-align: left;}
      th {background-color: #f2f2f2;}
    </style>
  </head>
  <body>
    <h1 style="color:red;font-size:25px;">This is My Header</h1>
    {0}
  </body>
</html>
""".format(df3.to_html())
consumptions = MIMEText(html, 'html')
msg.attach(consumptions)

方案2:用pandas Styler自定义样式(兼容性最好)

如果需要适配老旧邮件客户端(比如旧版Outlook,对全局style标签支持差),或者需要精细控制不同位置的字体大小,可以先用pandas的Styler接口给DataFrame设置内联样式,再渲染为HTML插入邮件,内联样式不会被任何邮件客户端过滤。
示例代码:

# 给DataFrame设置单元格样式,指定字体大小
styled_df = df3.style.set_properties(**{
    'font-size': '16pt', # 普通单元格字体大小
    'border': '1px solid #ddd',
    'padding': '8px'
}).set_table_styles([
    # 单独设置表头字体大小
    {'selector': 'th', 'props': [('font-size', '18pt'), ('background-color', '#f2f2f2')]}
]).render()
# 注:pandas 1.4.0及以上版本请把上面的.render()替换为.to_html()

html = """\
<html>
  <head></head>
  <body>
    <h1 style="color:red;font-size:25px;">This is My Header</h1>
    {0}
  </body>
</html>
""".format(styled_df)
consumptions = MIMEText(html, 'html')
msg.attach(consumptions)

注意事项

  • 邮件HTML不要引用外部CSS文件,所有样式尽量写在页面内部或者直接作为元素的style属性,否则大概率会被邮件客户端拦截过滤
  • 字体大小单位推荐用px或者pt,不要用em、rem这类相对单位,避免不同客户端显示尺寸差异过大

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:36:10