cre*_*ers 4 xmlrpclib python-2.7 webapp2 asana mandrill
我正在使用体式集成为python中的客户/订单处理编写一个Web应用程序.
对于已注册的传入订单,会将发票创建为.pdf.我希望使用mandrill将此文件作为电子邮件附件发送到体式,因为asana python API尚未提供附件.
因为mandrill想要附件的内容作为base64编码的字符串,我使用这个函数创建pdf的二进制文件:
def binaryFile(self, pathToFile):
binary_obj = xmlrpclib.Binary( open(pathToFile).read() )
return binary_obj
Run Code Online (Sandbox Code Playgroud)
连同文件的路径,我把它扔进mandrill就像这样:
'attachments': [{'content': binaryFile,
'name': pathOfFile,
'type': 'application/pdf'}]
Run Code Online (Sandbox Code Playgroud)
当我尝试发送整件事时,这就是我得到的:
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
Run Code Online (Sandbox Code Playgroud)
谁能暗示我做错了什么?
谢谢.
好吧好吧,我自己发现了错误,当然是在base64编码中.我现在这样做:
import base64
def filetobase64(self, inputfilename):
return base64.b64encode(open(inputfilename, 'rb').read())
Run Code Online (Sandbox Code Playgroud)
现在一切都很好.
没有伤害!