2017-11-24 24 views
0

기본적으로 내 코드가 첨부 파일 (이 경우 epub)이 포함 된 전자 메일을 보내길 바랍니다.Sendgird를 사용한 전자 메일 첨부

지금은 sendgrid 라이브러리를 사용하여 메일을 보내고 sendgrid에 첨부 파일을 보내려면 base64로 인코딩하고 게시물을 통해 sendgrid 서버에 보내야합니다.

하지만 json은 바이트 형식을 지원하지 않으므로 인코딩 된 파일을 문자열로 변환해야합니다. 나는 오랜 시간 동안 노력했지만 내가 뭘 잘못했는지 전혀 모른다.하지만 나는 base64로 인코딩 된 문자열과 관련이 있음을 확신한다.

내 코드 기압이 같은 종류의 외모 :

#Encoding file 
with open(filename, 'rb') as f: 
    encoded = base64.b64encode(f.read()) 

attachment = Attachment() 

#Is this done correctly? 
attachment.content = str(encoded) 

attachment.type = "application/epub+zip" 
attachment.filename = filename 

email = Mail(from_email, subject, to_email, content) 
email.add_attachment(attachment) 
response = sg.client.mail.send.post(request_body=email.get()) 

은 누군가가 도와 드릴까요?

+1

와 함께이 라인 attachment.content = str(encoded) 를 교체 예 here

을 발견했다. – user1767754

+0

@ user1767754 그것은 400, 나쁜 요청입니다. 모든 코드가 아니지만 작동하지 않는 부분입니다. 나머지 코드는 관련성이 없습니다. 이러한 코드 라인에 대한 실수를 정확하게 지적했습니다. – BloodViolet

+0

테스트 환경이 없지만 문자열로 변환하는 대신 bytearray로 변환 해보십시오. – user1767754

답변

0

파이썬 3을 사용할 때 전자 메일을 보내는 문서가 작동하지 않는 것 같습니다.이 문제도 직면했습니다. 그때는 오류 메시지와 그 전체 코드 아니라 무슨 attachment.content = encoded.decode()