1

GAE Python で、データストアから CSV を書き込んでおり、ブロブストアに保存せずに電子メールで送信したいと考えています。これは、CRON ジョブとして 1 日 1 回実行することを目的としています。

エクスポートは正常に機能しますが、メールの添付ファイルに 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()
4

2 に答える 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()))])
于 2013-03-16T18:56:35.683 に答える
1

この行を変更してみてください。

message = mail.EmailMessage(sender="Me <me@gmail.com>",
        subject="Shop Export",
        attachments=[("shops.csv", self.response.body)])
于 2013-03-16T14:51:33.417 に答える