14

当我尝试使用 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. 此配置来自烧瓶大型教程(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 回答 3

46

据我所知,这种配置没有任何问题。唯一的问题是您的应用程序没有使用它。您应该在初始化之前更新配置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)
于 2013-09-18T21:09:38.973 回答
3

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

于 2017-03-31T08:25:20.440 回答
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 帐户允许从不太安全的应用程序访问。

于 2020-12-14T20:55:02.590 回答