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

Flask网站联系表单邮件发送报错:can only concatenate list (not "str") to list

解决Flask联系表单邮件发送报错:can only concatenate list (not "str") to list

错误原因

Flask-Mail的Message类要求recipients参数必须是列表类型的邮箱地址集合,你直接传入了字符串格式的邮箱,导致内部逻辑在处理收件人时触发类型拼接错误。

修正代码

把recipients的字符串改为列表即可,同时可以优化邮件内容,方便识别发件人信息:

@app.route("/contact",methods = ['GET', 'POST'])
def contact():
    if request.method == 'POST':
        name = request.form.get('name')
        email = request.form.get('email')
        message = request.form.get('message')
        
        # 将收件人改为列表格式
        msg = Message('作品集网站联系消息', sender=email, recipients=["husnainabbasi947514@gmail.com"])
        # 优化邮件内容,包含发件人姓名和邮箱
        msg.body = f"发件人:{name}\n邮箱:{email}\n消息内容:\n{message}"
        
        # 加入异常捕获,避免提交失败导致页面崩溃
        try:
            mail.send(msg)
            # 可在此添加提交成功的提示,比如flash消息
        except Exception as e:
            # 捕获发送失败异常,方便排查问题
            print(f"邮件发送失败:{str(e)}")
    
    return render_template('contact.html')

额外注意事项

  • 确认已正确配置Flask-Mail核心参数:MAIL_SERVER、MAIL_PORT、MAIL_USERNAME、MAIL_PASSWORD、MAIL_USE_TLS/MAIL_USE_SSL等,这些参数需要和你的邮箱服务商设置匹配(比如Gmail需开启应用专用密码)
  • 若需接收多个收件人,直接在列表里添加更多邮箱即可,比如["xxx@example.com", "yyy@example.com"]
  • 可结合Flask的flash功能,给用户返回提交成功/失败的提示信息,提升交互体验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 21:29:55