【问题标题】:Send data as .csv email attachmet Python将数据作为 .csv 电子邮件附件发送 Python
【发布时间】:2018-05-31 03:12:07
【问题描述】:

我有一个数据,比如说

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】:

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

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

    这样工作得很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-21
      • 2023-03-23
      • 1970-01-01
      • 2019-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-21
      相关资源
      最近更新 更多