html Flask-Mail的KEYERROR问题

vjhs03f7  于 2022-12-02  发布在  其他
关注(0)|答案(1)|浏览(116)

我在创建可以发送确认电子邮件的flask服务器时遇到了问题。即使我已经确保通过终端窗口安装了Flask和Flask_Mail,我还是收到了一个关键错误。
以下是生成错误的代码:

import os
import re

from flask import Flask, render_template,request,redirect
from flask_mail import Mail, Message
from cs50 import SQL

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
# tcp port
app.config["MAIL_SERVER"] = "smtp.gmail.com"
app.config["MAIL_USE_TLS"] = True
# use encryption= true
app.config["MAIL_USERNAME"] = os.environ["MAIL_USERNAME"]

mail = Mail(app)
...

以下是生成的错误:

Traceback (most recent call last):
  File "/opt/cs50/lib/flask", line 19, in <module>
    sys.exit(flask.cli.main())
  File "/usr/local/lib/python3.10/site-packages/flask/cli.py", line 1047, in main
    cli.main()
  File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.10/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/click/decorators.py", line 84, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/flask/cli.py", line 911, in run_command
    raise e from None
  File "/usr/local/lib/python3.10/site-packages/flask/cli.py", line 897, in run_command
    app = info.load_app()
  File "/usr/local/lib/python3.10/site-packages/flask/cli.py", line 312, in load_app
froshims5/ $     app = locate_app(import_name, None, raise_if_not_found=False)
  File "/usr/local/lib/python3.10/site-packages/flask/cli.py", line 218, in locate_app
    __import__(module_name)
  File "/workspaces/103199450/froshims5/app.py", line 10, in <module>
    app.config["MAIL_DEFAULT_SENDER"] = os.environ["MAIL_DEFAULT_SENDER"]
  File "/usr/local/lib/python3.10/os.py", line 679, in __getitem__
    raise KeyError(key) from None
KeyError: 'MAIL_DEFAULT_SENDER'

代码可能有什么问题?

ruarlubt

ruarlubt1#

没关系,我设法让它工作了。我想问题与环境变量有关。我所做的是将我的代码从上面的代码改为下面的代码:

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)

相关问题