[英]How to email out data from a csv file with Sendgrid using python
[英]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.