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

Python批量发送HTML邮件无法正常渲染问题求助

解决批量发送HTML邮件无法渲染的问题

你的问题出在使用set_content()方法上——这个方法用于设置纯文本格式的邮件内容,导致HTML代码被当作普通文本直接显示,无法被收件端渲染。要发送可正常渲染的HTML邮件,需要用EmailMessage.add_alternative()方法指定HTML内容,同时建议保留纯文本版本作为降级方案(兼容不支持HTML的邮箱客户端)。

修改后的代码如下:

emails = [c for c in view_contactos]
if add.validate_on_submit(): #validamos datos
    subject = add.title.data
    body_message = add.body.data
    #conexion al server
    context = ssl.create_default_context()
    server = smtplib.SMTP_SSL('smtp.gmail.com', DevConfig.MAIL_PORT, context=context)
    server.login(DevConfig.MAIL_USERNAME, DevConfig.MAIL_PASSWORD)
    #envio del correo
    for row in emails:
        em = EmailMessage()
        em['From'] = DevConfig.MAIL_USERNAME
        em['To'] = row
        em['Subject'] = subject
        # 设置纯文本降级内容(供不支持HTML的客户端使用)
        em.set_content("请使用支持HTML的邮箱客户端查看此邮件内容")
        # 添加HTML格式的邮件内容
        em.add_alternative(body_message, subtype='html')
        server.send_message(em)

    server.close()
    print('done')

关键注意点:

  • 确保body_message变量中的内容是合法的HTML代码(比如标签闭合、语法正确),否则可能出现渲染异常
  • add_alternative(subtype='html')会明确标记内容为HTML格式,触发收件端的渲染逻辑
  • 保留set_content()的纯文本版本,能避免不支持HTML的邮箱客户端显示杂乱的HTML代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 01:50:30