python-2.7 - Mandrill python API 附件错误信息

标签 python-2.7 webapp2 asana xmlrpclib mandrill

我正在使用 asana 用 Python 编写用于客户/订单处理的 Web 应用程序一体化。

对于已注册的传入订单,会以 .pdf 格式创建发票。我想使用 mandrill 将此文件作为电子邮件附件发送到 asana,因为 asana python API 尚不提供附件。

因为 mandrill 想要附件的内容作为 base64 编码的字符串,所以我使用这个函数创建了 pdf 的二进制文件:

def binaryFile(self, pathToFile):
    binary_obj = xmlrpclib.Binary( open(pathToFile).read() )
    return binary_obj

连同文件的路径,我把它扔到 mandrill 中,如下所示:
'attachments': [{'content': binaryFile,
                 'name': pathOfFile,
                 'type': 'application/pdf'}]

当我尝试发送整个内容时,这就是我得到的:
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-   packages/mandrill.py", line 1215, in send
return self.master.call('messages/send', _params)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mandrill.py", line 131, in call
  params = json.dumps(params)
  OverflowError: Overlong 3 byte UTF-8 sequence detected when encoding string

谁能暗示我做错了什么?

谢谢你。

最佳答案

好吧,我自己发现了错误,当然是在 base64 编码中。我现在是这样做的:

import base64

def filetobase64(self, inputfilename):
    return base64.b64encode(open(inputfilename, 'rb').read())

现在一切正常。

没有伤害的意思!

关于python-2.7 - Mandrill python API 附件错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19168728/

相关文章:

python - 如何在给定 gps 原点的情况下找到附近的点?

qt - graph_tool pyside gtk 2.x 和 gtk 3.x

Python创建多线程并创建处理时间

python - 我可以将 webapp2.RequestHandler 请求异步复制到不同的 url 吗?

ssl - Asana:Webhook 创建中的 SSL

phpstorm - 如何从 PHPStorm 连接 Asana?

python-2.7 - 使 SQLite 更快地运行 SELECT

javascript - 如何在提交表单时启用后退按钮

python - 替换 python 脚本中 self.response.write 的 webapp2 用法

asana - 使用 Asana API 复制项目