如何使用 Flask-Mail 发送 csv 文件

How to send a csv file using Flask-Mail

我创建了一个 Flask 应用程序,下面的代码是视图的一部分。

msg = Message("[STATSUMM] DATA REQUESTED", sender="mateobonnett@gmail.com",recipients=[form.email.data])

msg.attach('app/Covid/Files/Covid_19_2020-03-31.csv', 'application/octet-stream')

mail.send(msg)

发送不带附件的邮件时表现良好。但是,在附加 csv 文件时出现此错误

TypeError: expected bytes-like object, not NoneType

我该如何解决?

上面的代码片段有几个问题:

  1. 您不应该直接在 msg.attach

    上阅读文件
  2. 根据 RFC7111 csv 文件的 mime 类型应该是 text/csv

with app.open_resource("app/Covid/Files/Covid_19_2020-03-31.csv") as fp:
    msg.attach("Covid_19_2020-03-31.csv", "text/csv", fp.read())

有关 Flask-Mail API

的更多详细信息