`
import re
import os
from flask import Flask, request, render_template, current_app
from flask_mail import Mail, Message
app = Flask(__name__)
app.config['MAIL_DEFAULT_SENDER'] = os.environ['MAIL_DEFAULT_SENDER']
app.config["MAIL_PASSWORD"] = os.environ["MAIL_PASSWORD"]
app.config["MAIL_PORT"] = 587
app.config["MAIL_SERVER"] = "smtp.gmail.com"
app.config["MAIL_USE_TLS"] = True
app.config["MAIL_USERNAME"] = os.environ["MAIL_USERNAME"]
mail = Mail(app)
SPORTS = [
"Basketball",
"Soccer",
"Ultimate Frisbee"
]
@app.route("/")
def index():
return render_template("index.html", sports=SPORTS)
@app.route("/register", methods=["POST"])
def register():
name = request.form.get("name")
email = request.form.get("email")
sport = request.form.get("sport")
if not name or not email or sport not in SPORTS:
return render_template("failure.html")
message = Message("You are registered!", recipients=[email])
mail.send(email)
return render_template("success.html")
`
$ python -m flask run
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "C:\Python311\Lib\site-packages\flask\__main__.py", line 3, in <module>
main()
File "C:\Python311\Lib\site-packages\flask\cli.py", line 1047, in main
cli.main()
File "C:\Python311\Lib\site-packages\click\core.py", line 1055, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "C:\Python311\Lib\site-packages\click\core.py", line 1657, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python311\Lib\site-packages\click\core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python311\Lib\site-packages\click\core.py", line 760, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python311\Lib\site-packages\click\decorators.py", line 84, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python311\Lib\site-packages\click\core.py", line 760, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python311\Lib\site-packages\flask\cli.py", line 911, in run_command
raise e from None
File "C:\Python311\Lib\site-packages\flask\cli.py", line 897, in run_command
app = info.load_app()
^^^^^^^^^^^^^^^
File "C:\Python311\Lib\site-packages\flask\cli.py", line 308, in load_app
app = locate_app(import_name, name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python311\Lib\site-packages\flask\cli.py", line 218, in locate_app
__import__(module_name)
File "C:\*my_folders*\*my_folders*\froshimsemail\app.py", line 8, in <module>
app.config['MAIL_DEFAULT_SENDER'] = os.environ['MAIL_DEFAULT_SENDER']
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen os>", line 678, in __getitem__
KeyError: 'MAIL_DEFAULT_SENDER'
上面的錯誤甚至是什么意思?我發現問題已經幾個小時了,我已經卸載并安裝了幾次,并檢查了我在正確的 python 解釋器上
通過這應該去cs50提問,因為它來自他們的課程,但我對如何解釋我的問題持懷疑態度。
uj5u.com熱心網友回復:
如果環境MAIL_DEFAULT_SENDER不存在,那么運行時會出現 KeyError os.environ['MAIL_DEFAULT_SENDER']。我認為這就是這里正在發生的事情。
一個解決方案可能是使用os.environ.get(). 這是您可以執行此操作的方法
app.config['MAIL_DEFAULT_SENDER'] = os.environ.get('MAIL_DEFAULT_SENDER')
如果存在,這將設定app.config['MAIL_DEFAULT_SENDER']為環境變數 MAIL_DEFAULT_SENDER 的值,否則設定為 None。
如果你愿意,你可以指定一個默認值作為第二個引數。
app.config['MAIL_DEFAULT_SENDER'] = os.environ.get('MAIL_DEFAULT_SENDER', 'default mail sender')
uj5u.com熱心網友回復:
多虧了“Hanan F”的建議,我在 os.environ 放置了 .get 和“MAIL_DEFAULT_SENDER”括號后使代碼作業,從方形變為圓形。
app.config['MAIL_DEFAULT_SENDER'] = os.environ.get('MAIL_DEFAULT_SENDER')
app.config["MAIL_PASSWORD"] = os.environ.get("MAIL_PASSWORD")
app.config["MAIL_PORT"] = 587
app.config["MAIL_SERVER"] = "smtp.gmail.com"
app.config["MAIL_USE_TLS"] = True
app.config["MAIL_USERNAME"] = os.environ.get("MAIL_USERNAME")
mail = Mail(app)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/529881.html
標籤:Python烧瓶烧瓶邮件
上一篇:從Flask中的串列動態創建鏈接
