[英]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.