如何使用Flask Mail发送csv文件



我创建了一个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 的更多详细信息

最新更新