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

Flask邮件发送功能失效求助:无报错但无法发送邮件

问题排查与解决方案
  • 初始化顺序错误
    你先实例化了mail = Mail(app),之后才设置邮件配置,这时候Mail对象已经用默认配置完成初始化,根本没读取到后续的SMTP参数。调整代码顺序:

    app = Flask(__name__)
    # 先配置所有邮件参数
    app.config['MAIL_SERVER']='smtp.gmail.com'
    app.config['MAIL_PORT'] = 465
    app.config['MAIL_USERNAME'] = 'mymail@gmail.com'
    app.config['MAIL_PASSWORD'] = '你的应用专用密码'
    app.config['MAIL_USE_TLS'] = False
    app.config['MAIL_USE_SSL'] = True
    # 再初始化Mail对象
    mail= Mail(app)
    
  • Gmail 身份验证限制
    Gmail 现在禁止直接使用账号密码登录第三方应用,必须使用应用专用密码:

    1. 先给你的谷歌账号开启两步验证
    2. 登录谷歌账号管理页面,生成对应“邮件”用途的应用专用密码
    3. 把这个应用专用密码替换到MAIL_PASSWORD字段中
  • 收件人参数格式错误
    recipients参数要求传入列表类型,不是单个字符串,修改为:

    msg = Message('Hello', 
                  sender='mymail@gmail.com',
                  recipients=['receiver@gmail.com'])
    
  • 异常捕获信息不足
    当前的异常处理只提示发送失败,看不到具体错误原因,建议修改捕获逻辑:

    try:
        # ... 发送邮件代码 ...
    except Exception as e:
        print(f'邮件发送失败: {str(e)}')
    

    这样能打印出具体错误(比如身份验证失败、连接超时等),方便进一步排查。

  • 补充:localhost 和 SMTP 服务器的区别

    • localhost 指你本地搭建的邮件服务器(比如Postfix、Sendmail),需要自己配置维护才能实现邮件发送
    • smtp.gmail.com 是谷歌提供的公共SMTP服务器,帮你完成邮件发送的底层网络操作,无需自行搭建服务器

内容的提问来源于stack exchange,提问作者Alp Eren Gl Student

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 17:12:19