2017-11-24 15 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) この行を交換し、それは完全なコードではありません。 – user1767754

+0

@ user1767754これは400の不正リクエストです。それはすべてのコードではありませんが、動作しない部分です。残りのコードは無関係です。これらのコード行の誤りを正確に特定しました。 – BloodViolet

+0

テスト環境はありませんが、文字列に変換する代わりに、bytearrayに変換してみてください。 – user1767754

答えて

0

Python 3を使用しているときに電子メールを送信するためのドキュメントが動作していないようです。私もこの問題に直面していました。その後、私はこの例を見つけたhere

attachment.content = encoded.decode()

関連する問題