Python如何读取HTML文件传递参数后通过邮件发送?
实现HTML模板占位符替换后发送邮件的方法
你当前读取到的HTML内容本身是字符串格式,用Python内置的字符串格式化方法就可以直接替换{name}这类占位符,不需要额外引入依赖,修改方案如下:
修改后完整代码
# 如需处理HTML特殊字符可导入html模块 import html from email.message import EmailMessage # 此处默认你已实现好send()发信逻辑 def send_html(send_to=None, subject=None, name=None): msg = EmailMessage() msg['Subject'] = subject if subject else 'Thank You!' msg['From'] = 'abc@abc.com' msg['To'] = send_to # 读取HTML模板文件 with open("thankyou.html", "r", encoding='utf-8') as f: html_template = f.read() # 替换占位符,可根据需要新增更多参数 # 若参数包含HTML特殊字符建议先转义:name = html.escape(name) message = html_template.format(name=name) # 设置邮件HTML内容 msg.set_content(message, subtype='html') send(msg) return "Email with html sent"
注意事项
- 如果你有多个占位参数,比如HTML里还有
{register_time}、{user_level}这类标记,只需要在format方法里传入对应的键值对即可,示例:html_template.format(name=name, register_time=register_time, user_level=user_level) - 如果传入的参数可能包含
<、>、&等HTML特殊字符,建议先调用html.escape(参数值)做转义,避免参数内容破坏HTML页面结构,也可规避潜在的XSS风险 - 如果后续模板逻辑复杂(需要循环、条件判断等),可以引入Jinja2模板引擎处理,语法和现有占位符写法兼容度高,扩展更灵活
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

