【问题标题】:flask-mail gmail: connection refused烧瓶邮件 gmail:连接被拒绝
【发布时间】:2013-09-23 18:50:46
【问题描述】:

当我尝试使用 flask-mail 通过我的 gmail 帐户发送电子邮件时遇到以下错误。

错误:[Errno 10061] 由于目标机器主动拒绝,无法建立连接

我尝试过以各种方式配置flask-mail,但到目前为止我总是收到此错误。

以下是我尝试过的一些示例配置:

  1. app = Flask(__name__)
    mail = Mail(app)
    
    app.config.update(dict(
        DEBUG = True,
        MAIL_SERVER = 'smtp.gmail.com',
        MAIL_PORT = 465,
        MAIL_USE_TLS = False,
        MAIL_USE_SSL = True,
        MAIL_USERNAME = 'my_username@gmail.com',
        MAIL_PASSWORD = 'my_password',
    ))
    
  2. app = Flask(__name__)
    mail = Mail(app)
    
    app.config.update(dict(
        DEBUG = True,
        MAIL_SERVER = 'smtp.gmail.com',
        MAIL_PORT = 587,
        MAIL_USE_TLS = True,
        MAIL_USE_SSL = False,
        MAIL_USERNAME = 'my_username@gmail.com',
        MAIL_PASSWORD = 'my_password',
    ))
    
  3. 此配置来自烧瓶超级教程(http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xi-email-support)

    app = Flask(__name__)
    mail = Mail(app)
    
    app.config.update(dict(
        DEBUG = True,
        # email server
        MAIL_SERVER = 'smtp.googlemail.com',
        MAIL_PORT = 465,
        MAIL_USE_TLS = False,
        MAIL_USE_SSL = True,
        MAIL_USERNAME = 'my_username',
        MAIL_PASSWORD = 'my_password',
    
        # administrator list
        ADMINS = ['my_username@gmail.com']
    ))
    

有没有其他人遇到过类似的问题?

【问题讨论】:

    标签: python python-2.7 flask flask-mail


    【解决方案1】:

    据我所知,此配置没有任何问题。唯一的问题是您的应用程序没有使用它。你应该在初始化Mail之前更新配置:

    app = Flask(__name__)
    
    app.config.update(dict(
        DEBUG = True,
        MAIL_SERVER = 'smtp.gmail.com',
        MAIL_PORT = 587,
        MAIL_USE_TLS = True,
        MAIL_USE_SSL = False,
        MAIL_USERNAME = 'my_username@gmail.com',
        MAIL_PASSWORD = 'my_password',
    ))
    
    mail = Mail(app)
    

    【讨论】:

    • 这行得通,谢谢!现在看起来简单而合乎逻辑。我想我被烧瓶邮件文档误导了,这些文档显示邮件在没有任何事先配置的情况下被实例化 (pythonhosted.org/flask-mail) 以及我没有注意到的这个 sn-p (flask.pocoo.org/snippets/85) 实际上两次实例化邮件!
    • 现在它给出了...类似 smtplib.SMTPAuthenticationError SMTPAuthenticationError: (534, '5.7.14 请通过您的网络浏览器登录,然后重试。\n5.7.14 了解更多信息support.google.com/mail/bin/answer.py?answer=787 \n5.7.14 54 q44sm5794504eez.1 - gsmtp')
    • 如果您确定您提供了正确的凭据,这很可能与高流量或某种可疑活动有关,并且与编程无关。
    【解决方案2】:

    除了 zero323 的回答之外,在创建 Mail 对象之前添加配置应该会有所帮助,但如果它在 gmail 服务器上出现 SMTPAuthentication 错误,那么 仅用于测试目的 可能会允许不太安全的应用程序登录一段时间 - https://myaccount.google.com/security#signin

    【讨论】:

      【解决方案3】:
      from flask import Flask
      from flask_mail import Mail, Message
      
      app = Flask(__name__)
      app.config['MAIL_SERVER'] = 'smtp.gmail.com'
      app.config['MAIL_PORT'] = 587
      app.config['MAIL_USE_TLS'] = True
      app.config['MAIL_USERNAME'] = 'youremail@gmail.com'
      app.config['MAIL_PASSWORD'] = 'your_email_password'
      
      mail = Mail(app)
      
      @app.route('/')
      def home():
          msg = Message('mail title', sender='sender of the email', recipients=['recipient2gmail.com'])
          msg.body = 'Body of the email to send'
          return 'Mail Sent...'
      
      
      if __name__ == '__main__':
          app.run()
      

      使用正确的配置运行应该可以发送电子邮件。 注意邮件在配置发送后初始化。

      如果出现任何其他错误,请确保您的 Google 帐户允许从不太安全的应用程序进行访问。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-03
        • 1970-01-01
        • 2021-01-20
        • 1970-01-01
        • 1970-01-01
        • 2016-05-28
        • 1970-01-01
        • 2018-07-22
        相关资源
        最近更新 更多