sendgrid 发送邮件报错TypeError: Object of type Email is not JSON serializable

app.config.update(
    SECRET_KEY=os.getenv('SECRET_KEY', 'secret string'),
    MAIL_SERVER=os.getenv('MAIL_SERVER'),
    MAIL_PORT=587,
    MAIL_USE_TLS =True,
    MAIL_USERNAME=os.getenv('MAIL_USERNAME'),
    MAIL_PASSWORD=os.getenv('SENDGRID_API_KEY'),
    MAIL_DEFAULT_SENDER=('ly', os.getenv('SENDGRID_API_KEY'))
)

SENDGRID_API_KEY=SG.FKvhjacLT9SdrgsPg6d5rA.4aPkOCM7ZRHu931JcgAA5W…
MAIL_USERNAME=apikey
MAIL_SERVER=smtp.sendgrid.net

SendGrid 的 Python 库在新版本引入了几个破坏性的 API 变化,这个错误也是这些 API 变化其中之一导致的。最简单的解决办法是把 sendgrid-python 的版本回退到书里使用的版本:

(env) $ pip install sendgrid==5.3.0

如果不想回退版本,那就参考这里修改 email/app.py 第 49 行的代码:https://github.com/sendgrid/sendgrid-python/issues/782#issuecomment-480306184

(P.S. 下次发帖记得用纯文本给出错误回溯)