繁体   English   中英

为Sendgrid的Email API编码CSV文件

[英]Encode CSV file for Sendgrid's Email API

我正在尝试使用R / Python和Sendgrid的Email API构建客户端报告引擎。 我可以发送电子邮件,但我需要做的最后一件事就是附上客户的CSV报告。

我尝试了很多方法,包括base64编码文件和将字符串写入磁盘从R到python,但不是运气。 也就是说,似乎我遇到了这个错误:

TypeError:'bytes'类型的对象不是JSON可序列化的

我的代码是:

with open('raw/test-report.csv', 'rb') as fd:
     b64data = base64.b64encode(fd.read())
attachment = Attachment()
attachment.content = b64data
attachment.filename = "your-lead-report.csv"
mail.add_attachment(attachment)

令人困惑的是,如果我只是用线替换b64data

attachment.content = 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gQ3JhcyBwdW12'

发送带附件的电子邮件。

作为参考,我一直在使用:

https://github.com/sendgrid/sendgrid-python

厨房水槽教程

并且在我的项目的最后一步之前没有任何问题。

任何帮助将不胜感激。 值得注意的是我的力量在R ,但我通常可以在互联网的帮助下在python一起破解。

在将b64data分配给attachment.content之前,需要将b64data转换为常规字符串。 Sendgrid构建一个JSON有效负载,它在请求中发送,因此它不知道如何序列化分配给attachment.content的值,在这种情况下是一个bytestring

str(b64data,'utf-8')

参考文献:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM