繁体   English   中英

错误:[Errno 111] flask -mail中的连接被拒绝

[英]error: [Errno 111] Connection refused in flask -mail

我有两个演示,第一个不起作用,但是第二个起作用。 我想了解原因。

错误:

raise err
error: [Errno 111] Connection refused

__init__.py

mail = Mail()

MAIL_SERVER = 'smtp.gmail.com'
MAIL_PORT = 465
MAIL_USE_TLS = False
MAIL_USE_SSL= True
MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')

def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config[config_name])

    mail.init_app(app)
    app.debug = True

    return app

app = create_app(os.getenv('FLASK_CONFIG') or 'default')

views.py

from ..mymail import mmail

mmail();

mymail.py

from flask.ext.mail import Message
from . import mail

def mmail():
    msg = Message(
      'Hello',
       sender='user@gmail.com',
       recipients=
       ['xxxxxxxxxx@hotmail.com'])
    msg.body = "This is the email body"
    mail.send(msg)
    return "Sent"

奇怪的是,此示例将正常运行:

from flask.ext.mail import Mail, Message
import os

DEBUG = True

MAIL_SERVER='smtp.gmail.com'
MAIL_PORT=465
MAIL_USE_TLS = False
MAIL_USE_SSL= True
MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')

def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(__name__)
    mail = Mail(app)

    msg = Message(
      'Hello',
       sender='user@gmail.com',
       recipients=
       ['xxxxxxxxxx@hotmail.com'])
    msg.body = "This is the email body"
    mail.send(msg)
    return "Sent"

app = create_app(os.getenv('FLASK_CONFIG') or 'default')

那么,有什么问题呢?

这里的问题是您没有将苹果与苹果进行比较。

  • 在非工作示例中,您使用来自未指定的类似字典的对象config值来配置应用程序,该对象传入在名为FLASK_CONFIG的环境变量中找到的键(如果FLASK_CONFIG则退回到“默认值”)。

     app.config.from_object(config[config_name]) 
  • 工作示例中,您使用当前模块中定义的大写名称来配置应用程序:

     app.config.from_object(__name__) # config_name is ignored 

无论将什么密钥传递到无法工作的示例,都将提供一个对象,该对象不具有您要用于Mail的凭据。

您可以:

  • 首先通过默认值配置应用程序,然后从config字典中加载替代:

     app.config.from_object(__name__) app.config.from_object(config[config_name]) 
  • 或确保您的配置具有正确的值:

     config = { "development": SomeDevConfig, "staging": SomeStagingConfig, "production": SomeProductionConfig, "default": SomeDefaultConfig } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM