在内存中创建一个ZipFile并将其附加到电子邮件

daniel9x:

我正在尝试修改现有的python脚本,以将内存中CSV转换为zip存档(也位于内存中)并将其作为电子邮件附件发送。我已经成功地附加了一个内存中的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)

从这个用户最不赞成的答案中,我可以read() takes at least 2 arguments通过open()对zip文件执行常规操作来修复我收到错误,但是由于该文件是无法使用的缓冲流。

我不确定如何将zipfile对象加载到中,set_payload但是我认为应该也可以。

吹嘘:

对象read方法ZipFile用于读取zip文件中命名文件的内容。

使用实例bufferwritestr方法写入缓冲区后,应使用的内容ZipFile

csv_file.set_payload(buffer.getvalue())

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Apps 脚本将数据导出到另一个电子表格,在 xlsx 中构建它并将其附加到电子邮件

在 PHP 中创建一个 word 文件并将其附加到邮件中

生成 XML 文件并将其附加到电子邮件中 (Node.js)

在内存中创建一个临时文件并将其用作命令的输入文件

将两个pdf合并为一个并附加到apex的电子邮件中

DNS电子邮件-如何捕获所有@ mydomain.com电子邮件并将其发送到一个特定的电子邮件帐户?

如何使用Twilio函数中的Node.js检索Twilio传真PDF并将其附加到电子邮件中?

在内存,电子邮件中创建CSV并从内存中删除

如何创建一个Drawer实例并将其附加到MainWindow

AWS Lambda-在内存中生成CSV并将其作为附件发送到电子邮件

创建Word文档,然后将其附加到电子邮件Django

保留导入的文件,然后将其附加到电子邮件

将内存中的图像(或对象)附加到python中的电子邮件

我想将多个电子邮件地址附加到一个收件箱,然后将接收到的电子邮件过滤到文件夹中

创建一个包含电子邮件的数组

嵌入图像并将文件附加到通过Excel VBA发送的电子邮件中

Avast会自动将其广告附加到计算机发送的每封电子邮件中

在内存中生成一个大文件,并将其流式传输到对象存储中

创建一个自定义按钮,以便能够从 Outlook 电子邮件中获取数据并将该数据移动到 Oracle 表中

克隆一个 JsonNode 并将其附加到 .NET 6 中的另一个

在系统中找到一封电子邮件并将其删除,该电子邮件会显示在日志中

创建一个文本文件,然后通过电子邮件发送而不将其保存在本地

根据电子邮件在谷歌日历中创建一个条目

在 html 电子邮件模板 php 中创建一个 foreach 表

在Java中创建电子邮件对象并将其保存到文件

使用Google Apps脚本,如何检查电子邮件中是否附有pdf,然后将其转发到另一个电子邮件地址?

在另一个组件内部创建一个Web组件并将其附加到另一个组件是不好的做法吗?

创建一个 iframe 并将其附加到所有现有的目标 div 并填充 src 属性

在内存中创建一个Zip文件