Python Flask Email KeyError KeyError: 'mail'
Python Flask Email KeyError KeyError: 'mail'
我在使用 Python Flask 和 Flask-Mail 库时遇到问题。
我遇到一个错误:
KeyError: 'mail'
谁能帮我解决这个问题?
我的代码是:
# -*- coding: utf-8 -*-
from flask import Flask
from flask.ext.mail import Message
from flask.ext.mail import Mail
from ws import app
class Email():
def __init__(self):
""
#
# Enviar el email
#
def enviar_mail(self,subject, sender, recipients, text_body="hola mundo txt", html_body="hola mundo html"):
app = Flask(__name__)
app.config.update(dict(
MAIL_SERVER = 'smtp.gmail.com',
MAIL_PORT = 465,
MAIL_USE_TLS = False,
MAIL_USE_SSL = True,
MAIL_USERNAME = 'miaccount@gmail.com',
MAIL_PASSWORD = 'mypasswd$%'
))
mail = Mail(app)
mail.init_app(app)
msg = Message("Hello", sender="miaccount@gmail.com",recipients=["myrecipient@hotmail.com"])
msg.body = "testing"
msg.html = "<b>testing</b>"
mail.send(msg)
错误是
KeyError
KeyError: 'mail'
Traceback (most recent call last)
File "/home/javier/python/wszbeltia/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
mail.send(msg)
File "/home/javier/python/wszbeltia/lib/python2.7/site-packages/flask_mail.py", line 492, in send
message.send(connection)
File "/home/javier/python/wszbeltia/lib/python2.7/site-packages/flask_mail.py", line 427, in send
connection.send(self)
File "/home/javier/python/wszbeltia/lib/python2.7/site-packages/flask_mail.py", line 190, in send
message.as_bytes() if PY3 else message.as_string(),
File "/home/javier/python/wszbeltia/lib/python2.7/site-packages/flask_mail.py", line 381, in as_string
return self._message().as_string()
File "/home/javier/python/wszbeltia/lib/python2.7/site-packages/flask_mail.py", line 307, in _message
**ascii_attachments = current_app.extensions['mail'].ascii_attachments
KeyError: 'mail'**
降级到flask_mail==0.9.0
这似乎是版本 0.9.1 中的回归。
我不能将 flask_mail==0.9.0 与 python 3.8 一起使用,它给了我这个错误:
“python 中的 smtplib.server.sendmail 函数引发 UnicodeEncodeError:'ascii' 编解码器无法编码字符”。
我需要使用 flask_mail==0.9.1。使用 flask_mail==0.9.1 我收到“Email KeyError KeyError: 'mail'”错误。
我通过使用解决了“Email KeyError KeyError: 'mail'”错误
“current_app”而不是“app”
from flask import current_app
mail = Mail(current_app)
# send unicode not ascii or latin
msg.html = message.encode("utf-8")
我在使用 Python Flask 和 Flask-Mail 库时遇到问题。
我遇到一个错误:
KeyError: 'mail'
谁能帮我解决这个问题?
我的代码是:
# -*- coding: utf-8 -*-
from flask import Flask
from flask.ext.mail import Message
from flask.ext.mail import Mail
from ws import app
class Email():
def __init__(self):
""
#
# Enviar el email
#
def enviar_mail(self,subject, sender, recipients, text_body="hola mundo txt", html_body="hola mundo html"):
app = Flask(__name__)
app.config.update(dict(
MAIL_SERVER = 'smtp.gmail.com',
MAIL_PORT = 465,
MAIL_USE_TLS = False,
MAIL_USE_SSL = True,
MAIL_USERNAME = 'miaccount@gmail.com',
MAIL_PASSWORD = 'mypasswd$%'
))
mail = Mail(app)
mail.init_app(app)
msg = Message("Hello", sender="miaccount@gmail.com",recipients=["myrecipient@hotmail.com"])
msg.body = "testing"
msg.html = "<b>testing</b>"
mail.send(msg)
错误是
KeyError
KeyError: 'mail'
Traceback (most recent call last)
File "/home/javier/python/wszbeltia/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
mail.send(msg)
File "/home/javier/python/wszbeltia/lib/python2.7/site-packages/flask_mail.py", line 492, in send
message.send(connection)
File "/home/javier/python/wszbeltia/lib/python2.7/site-packages/flask_mail.py", line 427, in send
connection.send(self)
File "/home/javier/python/wszbeltia/lib/python2.7/site-packages/flask_mail.py", line 190, in send
message.as_bytes() if PY3 else message.as_string(),
File "/home/javier/python/wszbeltia/lib/python2.7/site-packages/flask_mail.py", line 381, in as_string
return self._message().as_string()
File "/home/javier/python/wszbeltia/lib/python2.7/site-packages/flask_mail.py", line 307, in _message
**ascii_attachments = current_app.extensions['mail'].ascii_attachments
KeyError: 'mail'**
降级到flask_mail==0.9.0
这似乎是版本 0.9.1 中的回归。
我不能将 flask_mail==0.9.0 与 python 3.8 一起使用,它给了我这个错误: “python 中的 smtplib.server.sendmail 函数引发 UnicodeEncodeError:'ascii' 编解码器无法编码字符”。
我需要使用 flask_mail==0.9.1。使用 flask_mail==0.9.1 我收到“Email KeyError KeyError: 'mail'”错误。
我通过使用解决了“Email KeyError KeyError: 'mail'”错误 “current_app”而不是“app”
from flask import current_app
mail = Mail(current_app)
# send unicode not ascii or latin
msg.html = message.encode("utf-8")