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
相关产品推荐
相关产品推荐

