2013-10-03 5 views
4

asana 통합으로 파이썬에서 고객/주문 처리를위한 웹 응용 프로그램을 작성하고 있습니다.Mandrill python API 첨부 오류 메시지

등록 된 수신 오더의 경우 인보이스는 .pdf로 생성됩니다. asana python API가 첨부 파일을 아직 제공하지 않기 때문에 mandrill을 사용하여 이메일 첨부 파일로 asana로 보내고 자하는이 파일. 드릴은 base64로 인코딩 된 문자열로 첨부 파일의 내용을 원하기 때문에

, 나는이 기능을 사용하여 PDF 파일의 바이너리 생성 : 파일의 경로와 함께

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

을, 나는 드릴로이 던져

'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 

내가 잘못하고있는 것을 암기 할 수있는 사람은 누구인가?

감사합니다.

답변

7

괜찮 았어, 나 스스로 실수를 발견했다. 물론 base64 인코딩에있다. 나는 지금 그렇게하고있다.

import base64 

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

모든 것이 잘 작동한다.

아무런 해가 없습니다.

+0

많은 시간을 낭비하고 결국이 대답을 얻었습니다. 고마워요 @ 크레이 머스. +1. 나는 왜 우리가 이것을해야하는지 생각하고있다. 왜 똑바로 될 수 있니? –