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

Python发送HTML邮件插入变量时出现KeyError: ' border'的解决求助

解决Python发送带HTML表格邮件时的format语法错误

我来帮你搞定这个问题——你碰到的KeyError: ' border'其实是两个小问题叠加导致的,咱们一步步拆解修复:

问题到底出在哪?

  1. 多余的语法笔误:你最后一行代码里写了"""".format(code=code),这里多了一个额外的双引号,应该是""".format(code=code)(虽然你说报错是KeyError,但这个小错误也得先修正)
  2. 大括号被误解析:HTML样式部分里的{ border: 1px solid black;}这种写法,会被str.format()当成要替换的占位符——它以为你要替换border这个变量,但你根本没定义这个变量,所以直接抛出KeyError。

两种简单的修复方案

方案1:转义大括号(兼容所有Python版本)

把HTML里所有需要保留的单个大括号改成两个大括号({{和}}),这样str.format()就会把它们解析成普通的大括号,而不是占位符。修正后的完整代码:

code = "Somebody"
html = """ <!DOCTYPE html> <html> <head> <style> table, th, td {{ border: 1px solid black; border-collapse: collapse;}} th, td {{padding: 5px;}} th {{text-align: left;}} </style> </head> <body> <h2>Basic HTML Table</h2> <table style="width:10%"><tr><th>Firstname</th></tr><tr><td>Jill</td></tr><tr><td>{code}</td></tr></table></body></html> """.format(code=code)

方案2:用f-string(Python3.6+更简洁)

如果你用的是Python3.6及以上版本,f-string会更省心——它只会解析带变量的{code},普通大括号只要写成{{就能输出{,写法更清爽:

code = "Somebody"
html = f""" <!DOCTYPE html> <html> <head> <style> table, th, td {{ border: 1px solid black; border-collapse: collapse;}} th, td {{padding: 5px;}} th {{text-align: left;}} </style> </head> <body> <h2>Basic HTML Table</h2> <table style="width:10%"><tr><th>Firstname</th></tr><tr><td>Jill</td></tr><tr><td>{code}</td></tr></table></body></html> """

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 00:47:44