GAE Python - 如何将csv.writer的结果附加到邮件中?
在GAE Python上,我正在从我的数据存储中生成一个CSV文件,并希望通过电子邮件发送这个文件,而不想把它存储在blobstore里。这个操作计划每天作为一个定时任务运行一次。
导出功能正常,但我不知道怎么把这个CSV文件添加到电子邮件的附件里。如果你能提供一些帮助,我将非常感激。
class ShopExport(webapp2.RequestHandler):
def get(self):
shops = Shop.all().filter('active =', True).order('name')
self.response.headers[str('Content-Type')] = str('application/csv')
self.response.headers[str('Content-Disposition')] = str('attachment; filename="shops.csv"')
writer = unicodecsv.writer(self.response.out, encoding='utf-8')
writer.writerow(["id", "name", "domain", "category", "deeplink", "region"])
writer.writerow([shop.keyname, shop.name, shop.url, shop.category, shop.url_aff, region])
message = mail.EmailMessage(sender="Me <me@gmail.com>",
subject="Shop Export",
attachments=[("shops.csv", self.response.out)])
message.to="Someone <someone@gmail.com>",
message.html= 'Please find attached the shop export'
message.send()
2 个回答
3
你可以这样做
import StringIO
...
data = StringIO.StringIO()
writer = unicodecsv.writer(data, encoding='utf-8')
...
message = mail.EmailMessage(sender="Me <me@gmail.com>",
subject="Shop Export",
attachments=[("shops.csv", bytes(data.getvalue()))])
1
试着修改这一行。
message = mail.EmailMessage(sender="Me <me@gmail.com>",
subject="Shop Export",
attachments=[("shops.csv", self.response.body)])