[英]Create a ZipFile in memory and attach it to an email
I'm trying to modify an existing python script to convert an in-memory CSV into an (also in memory) zip archive and send it as an attachment to an email. 我已经成功地在 memory CSV 文件中附加了一个(通过 MIMEText 对象),但是由于 ZIP 文件(通过 MIMEBase 文件对象的有效负载设置字节)遇到问题。
这是我到目前为止的代码:
csv_buffer = cStringIO.StringIO()
buffer = cStringIO.StringIO()
zf = zipfile.ZipFile(buffer,
mode='w',
compression=zipfile.ZIP_DEFLATED,
)
zf.writestr(csvfile + ".csv", csv_buffer.getvalue())
csv_file = MIMEBase('application', 'zip')
csv_file.set_payload(zf.read())
encoders.encode_base64(csv_file)
csv_file.add_header('Content-Disposition', 'attachment',
filename=csvfile + ".zip")
msg.attach(csv_file)
从这个这个用户最赞成的答案中,我可以通过对 zip 文件执行正常的open()
操作来修复read() takes at least 2 arguments
错误,但由于该文件是缓冲的 ZF7B44CFAFD5C652223D5Z498 不工作。
我不确定如何将zipfile
object 加载到set_payload
中,但我认为这也应该有效。
ZipFile
object 的read
方法旨在读取 zip 文件中命名文件的内容。
在使用ZipFile
实例的writestr
方法写入缓冲区后,您应该使用buffer
的内容:
csv_file.set_payload(buffer.getvalue())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.