如何在Django中以电子邮件附件形式发送pdf

如何在Django中以电子邮件附件形式发送pdf,django,pisa,Django,Pisa,您好,我正在使用以下两个功能创建并通过邮件发送pdf。我做错了什么。(在浏览器中显示时,“导出pdf”功能正常工作。) 我得到的错误是“TypeError:'ContentFile'对象不支持索引”。我做错了什么?几乎所有这些代码都是从一些博客中获取的,所以我不知道它到底是如何工作的。但是如果你不明白一些事情,请评论。我会回答 if request.method=="POST": form = ReportSendMailForm(request.POST) if form

您好,我正在使用以下两个功能创建并通过邮件发送pdf。我做错了什么。(在浏览器中显示时,“导出pdf”功能正常工作。)

我得到的错误是“TypeError:'ContentFile'对象不支持索引”。我做错了什么?几乎所有这些代码都是从一些博客中获取的,所以我不知道它到底是如何工作的。但是如果你不明白一些事情,请评论。我会回答

 if request.method=="POST":

    form = ReportSendMailForm(request.POST)

    if form.is_valid():

        email = form.cleaned_data['mail']
        message = form.cleaned_data['message']             
        print email
        print message
        result = export_pdf(request,id)
        file_to_be_sent= ContentFile(result)
        #print file_to_be_sent
        if result:
            #try :

                subject, from_email, to =  request.user.username+' has sent a report for review',' Dtz Team', email                   
                html_content = render_to_string('email/report.html',{'username':request.user,'messgae':message})                         
                msg = EmailMultiAlternatives(subject,'', from_email, [to])

                msg.attach_alternative(html_content, "text/html")
                msg.attach("Report.pdf", file_to_be_sent, "application/pdf")

                msg.send()  
                messages.success(request,'Please check your email id '+email+' for further instructions.')  
                return HttpResponse('success')         
            #except:
            #           pass             
messages.error(request,'Error occured in the pdf.')            
return HttpResponse(status=410)  
导出PDF函数
您不应该使用
django.core.files.ContentFile
,它只接受字符串

file_to_be_sent= export_pdf(request,id).getvalue() # if it's not None
msg.attach("Report.pdf", file_to_be_sent, "application/pdf")

那真的很快很准确。非常感谢:)而且工作得很好。
file_to_be_sent= export_pdf(request,id).getvalue() # if it's not None
msg.attach("Report.pdf", file_to_be_sent, "application/pdf")