flask-mail gmail:连接拒绝

时间:2013-09-18 20:38:22

标签: python python-2.7 flask flask-mail

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

  

错误:[Errno 10061]无法建立连接,因为目标计算机主动拒绝它

我已尝试以各种方式配置烧瓶邮件,但到目前为止,我总是遇到此错误。

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

  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. 此配置来自于烧瓶mega-tutorial(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']
    ))
    
  4. 还有其他人遇到类似的问题吗?

3 个答案:

答案 0 :(得分:28)

据我所知,此配置没有任何问题。唯一的问题是您的应用程序没有使用它。您应该在初始化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)

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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帐户允许访问不安全的应用程序。