2017-12-15 26 views
0

私はpdfファイルを電子メールで送信することに苦労しています(weasy printを使用しています)、モデルオブジェクトにファイルを保存せずに直接メールすることができます一時的な場所に保存して電子メールで送信することもできます)。 「ファイル()の引数1はFileFieldに保存せずにDjango PDFファイルをメールで送信

pdf_file = HTML(string=rendered_html, 
       base_url=settings.MEDIA_ROOT).write_pdf() 

certificate = SimpleUploadedFile(
    'Certificate-' + '.pdf', pdf_file, content_type='application/pdf') 

attachment = certifcate.read() 

msg.attach_file(attachment, 'application/pdf') 

答えて

0

私は、その場でPDFファイルを生成する一時的な場所に保存してit.Iを使用して停止した電子メールを送ることができたのをstrない、NULLバイトせずに文字列をエンコードする必要がありますSimpleUploadedFileを使用し、NamedTemporaryFile関数をtempfileから使用します。python module.itを使用すると、一時的な記憶領域として使用できるファイルのようなオブジェクトを返すことができます。ここにはlinkとドキュメントがあり、一時ファイルのblogを参照してください。

 pdf_file = HTML(string=rendered_html, 
       base_url=settings.MEDIA_ROOT).write_pdf() 

    temp = tempfile.NamedTemporaryFile() 
    temp.write(pdf_file) 
    temp.seek(0) 

    msg = EmailMultiAlternatives(
     subject, message, sender, receivers) 
    msg.attach_file(temp.name, 'application/pdf') 
    msg.send() 
関連する問題