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

Python循环内HTML代码嵌入变量失效及邮件内容设置问题

解决Python批量邮件发送的两个问题

问题1:HTML内容中变量b未正常渲染

  • 原因:HTML字符串未完成变量插值,直接写入{b}不会被Python解析,必须通过字符串格式化方法替换变量
  • 解决方法:使用f-string(Python 3.6+)或str.format()将变量嵌入HTML内容
    示例:
    # 错误写法:{b}不会被解析
    html_content = "<p>您好,{b},这是测试邮件</p>"
    # 正确写法1:f-string插值
    html_content = f"<p>您好,{b},这是测试邮件</p>"
    # 正确写法2:format方法插值
    html_content = "<p>您好,{},这是测试邮件</p>".format(b)
    

问题2:msg.add_alternative()后msg.set_content()看似失效

  • 原因:当邮件同时包含纯文本和HTML版本时,支持HTML的邮件客户端会优先显示HTML内容,并非set_content()功能失效
  • 解决方法:确保纯文本内容同步替换变量,保持set_content()在前、add_alternative()在后(顺序不影响功能,但逻辑更清晰),测试时可切换邮件客户端的「显示纯文本」模式验证内容
    完整批量发送代码示例:
    import smtplib
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText
    
    # 收件人列表:(姓名, 邮箱)格式
    recipients = [("张三", "zhangsan@example.com"), ("李四", "lisi@example.com")]
    smtp_server = "smtp.example.com"
    smtp_port = 587
    sender_email = "your_email@example.com"
    sender_password = "your_app_password"
    
    for name, email in recipients:
        # 创建多部分邮件对象
        msg = MIMEMultipart('alternative')
        msg['From'] = sender_email
        msg['To'] = email
        msg['Subject'] = f"专属通知 - {name}"
    
        # 设置纯文本内容(替换变量)
        plain_text = f"您好,{name},这是纯文本版本的邮件内容"
        msg.set_content(plain_text)
    
        # 设置HTML内容(替换变量)
        html_text = f"""
        <html>
          <body>
            <h1>您好,{name}!</h1>
            <p>这是为您定制的HTML格式邮件</p>
          </body>
        </html>
        """
        msg.add_alternative(html_text, subtype='html')
    
        # 发送邮件
        with smtplib.SMTP(smtp_server, smtp_port) as server:
            server.starttls()
            server.login(sender_email, sender_password)
            server.send_message(msg)
    

MacBook设备额外注意事项

  • 若使用Gmail等第三方邮箱,需开启应用专用密码(Mac系统安全限制下,直接用账号密码可能登录失败)
  • 测试时优先发送到自己的邮箱,通过客户端的「显示纯文本」选项验证set_content()的内容是否正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:55:17