Python 用Flask发送电子邮件
我正在关注Miguel Grinberg的Flask Web开发书,我在他的电子邮件章节遇到了一个问题 以下是他的配置:Python 用Flask发送电子邮件,python,python-3.x,flask,timeoutexception,flask-mail,Python,Python 3.x,Flask,Timeoutexception,Flask Mail,我正在关注Miguel Grinberg的Flask Web开发书,我在他的电子邮件章节遇到了一个问题 以下是他的配置: import os # ... app.config["MAIL_SERVER"] = "smtp.googlemail.com" app.config["MAIL_PORT"] = 587 app.config["MAIL_USE_TLS"] = True app.config["MAIL_USERNAME"] = os.environ.get("MAIL_USERNAME
import os
# ...
app.config["MAIL_SERVER"] = "smtp.googlemail.com"
app.config["MAIL_PORT"] = 587
app.config["MAIL_USE_TLS"] = True
app.config["MAIL_USERNAME"] = os.environ.get("MAIL_USERNAME")
app.config["MAIL_PASSWORD"] = os.environ.get("MAIL_PASSWORD")
设置环境变量后,我进入shell并尝试运行以下代码:
(venv) $ flask shell
>>> from flask_mail import Message
>>> from hello import mail
>>> msg = Message("test email", sender="you@example.com", recipients=["you@example.com])
>>> msg.body = "This is plain text body"
>>> msg.html = "This is <b>HTML</b> body"
>>> with app.app_context():
... mail.send(msg)
...
到
我硬编码了“MAIL\u USERNAME”和“MAIL\u PASSWORD”变量,但我又犯了同样的错误
由于没有任何效果,以及之前关于这个问题的问题非常古老(4年),我认为可能值得再次提出这个问题
如果有人知道我做错了什么,请告诉我。谢谢请确保您允许不太安全的应用程序连接到您的Google帐户。
以下是链接:使用以下参数进行尝试:
app.config["MAIL_SERVER"] = "smtp.gmail.com"
app.config["MAIL_PORT"] = 465
下面是一个适合我的例子:
import os
from flask import Flask, jsonify
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"]=False
app.config["MAIL_USE_SSL"]=True
app.config["MAIL_USERNAME"]=os.environ.get("MAIL_USERNAME")
app.config["MAIL_PASSWORD"]=os.environ.get("MAIL_PASSWORD")
mail = Mail(app)
msg = Message(
<your subject>,
sender=os.environ.get("MAIL_USERNAME"),
recipients=<recipiente e-mail>,
html=<your html template>
)
@app.route('/sendmail')
def publish():
mail.send(msg)
return jsonify({'message': 'Your message has been sent successfully'}), 200
if __name__ == '__main__':
app.run()
导入操作系统
从烧瓶导入烧瓶,jsonify
从电子邮件导入邮件、消息
app=烧瓶(名称)
app.config[“邮件服务器”]=“smtp.gmail.com”
app.config[“邮件端口”]=587
app.config[“邮件使用”]=False
app.config[“邮件使用SSL”]=True
app.config[“MAIL\u USERNAME”]=os.environ.get(“MAIL\u USERNAME”)
app.config[“MAIL\u PASSWORD”]=os.environ.get(“MAIL\u PASSWORD”)
邮件=邮件(应用程序)
消息(
,
sender=os.environ.get(“MAIL\u用户名”),
收件人=,
html=
)
@app.route(“/sendmail”)
def publish():
邮件发送(msg)
返回jsonify({'message':'您的邮件已成功发送'}),200
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.run()
我已经做到了。我还做了其他建议的步骤
app.config["MAIL_SERVER"] = "smtp.gmail.com"
app.config["MAIL_SERVER"] = "smtp.gmail.com"
app.config["MAIL_PORT"] = 465
import os
from flask import Flask, jsonify
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"]=False
app.config["MAIL_USE_SSL"]=True
app.config["MAIL_USERNAME"]=os.environ.get("MAIL_USERNAME")
app.config["MAIL_PASSWORD"]=os.environ.get("MAIL_PASSWORD")
mail = Mail(app)
msg = Message(
<your subject>,
sender=os.environ.get("MAIL_USERNAME"),
recipients=<recipiente e-mail>,
html=<your html template>
)
@app.route('/sendmail')
def publish():
mail.send(msg)
return jsonify({'message': 'Your message has been sent successfully'}), 200
if __name__ == '__main__':
app.run()