以.csv电子邮件附件Python发送数据

问题描述 投票:0回答:1

我有一个数据,比方说

data = [
    ['header_1', 'header_2'],
    ['row_1_!', 'row_1_2'],
    ['row_2_1', 'row_2_2'],
]

我需要将该数据作为.csv文件附件发送到电子邮件消息。我无法将其保存为.csv,然后附加现有的csv - 应用程序正在Googpe App Engine沙箱环境中工作。所以没有文件可以保存。

据我所知,电子邮件附件包含文件名和编码为base64的文件。

我尝试用以下方式制作附件体:

import csv
if sys.version_info >= (3, 0):
    from io import StringIO
else:
    from StringIO import StringIO
in_memory_data = StringIO()
csv.writer(inmemory_data).writerows(data)
encoded = base64.b64encode(inmemory_data.getvalue())

但结果我收到的电子邮件不是有效的文件2列和3行,而是文件中只有一个字符串(见图)。 csv_screen

我做错了什么?

python csv email
1个回答
0
投票

我发现了这个错误。我应该将它转换为bytearray而不是编码为base64:

encoded = bytearray(inmemory_data.getvalue(), "utf-8")

工作得那么好。

© www.soinside.com 2019 - 2024. All rights reserved.