Django、ReportLab PDF 生成附加在电子邮件中

2024-01-20

使用 Django 和 ReportLab 生成 PDF 并将其附加到电子邮件的最佳方法是什么?

我正在使用 SimpleDocTemplate,并且可以将生成的 PDF 附加到我的 HttpResponse - 这很棒,但我无法找到如何将相同的附件准确添加到电子邮件中:

    # Create the HttpResponse object with the appropriate PDF headers.
    response = HttpResponse(mimetype='application/pdf')
    response['Content-Disposition'] = 'attachment; filename=invoice.pdf'
    doc = SimpleDocTemplate(response, pagesize=letter)
    Document = []

...通过将表格附加到文档中来制作我的 pdf...

  doc.build(Document)
  email = EmailMessage('Hello', 'Body', '[email protected] /cdn-cgi/l/email-protection', ['[email protected] /cdn-cgi/l/email-protection'])
  email.attach('invoice.pdf', ???, 'application/pdf')
  email.send()

我只是不确定如何将我的 pdfdocument 翻译为 blob,以便 email.attach 可以接受它并且 email.send 可以发送它。

有任何想法吗?


使用报告实验室


try:
    from cStringIO import StringIO
except ImportError:
    from StringIO import StringIO
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter, A4
from reportlab.lib.units import inch

def createPDF(request):
 x=100
 y=100
 buffer=StringIO()
 p=canvas.Canvas(buffer,pagesize=letter)
 p.drawString(x,y,"HELLOWORLD")
 p.showPage()
 p.save() 
 pdf=buffer.getvalue()
 buffer.close() 
 return pdf

def someView(request):
 EmailMsg=mail.EmailMessage(YourSubject,YourEmailBodyCopy,'[email protected] /cdn-cgi/l/email-protection',["[email protected] /cdn-cgi/l/email-protection"],headers={'Reply-To':'[email protected] /cdn-cgi/l/email-protection'})
 pdf=createPDF(request)
 EmailMsg.attach('yourChoosenFileName.pdf',pdf,'application/pdf')
 EmailMsg.send()

完美运作!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django、ReportLab PDF 生成附加在电子邮件中 的相关文章

随机推荐

  • 连续的 sys_write 系统调用未按预期工作,OS X 上的 NASM 错误?

    我正在尝试使用 NASM 学习 MacOS 汇编 但无法让一个简单的程序运行 我正在尝试 Hello World 的变体 其中两个单词由宏独立调用 我的源代码如下所示 macro printString 2 mov rax 0x200000
  • 如何开始使用 Python 中的 InstagramAPI?

    我想使用 InstagramAPI 并编写一些代码 例如获取我的关注者列表之类的东西 我对这个话题真的很陌生 做这个的最好方式是什么 是否有一个Python Lib来处理这些json请求 或者我应该将它们直接发送到 新 图形API 显示AP
  • 切换收藏夹时,SwiftUI Landmarks 应用程序教程屏幕会导航回来

    我正在关注这个SwiftUI 教程 https developer apple com tutorials swiftui handling user input并下载了项目文件 https docs assets developer ap
  • 在折叠树的 Typed Racket 中投射到任意类型

    我正在尝试为某些类型生成一个类型化的球拍程序A 需要一个Tree 以及两个函数As to an A 另一个类型的参数A 并返回一个类型的值A 我不太熟悉 All 语法 但我尝试使用它 不幸的是 我的代码在构建时产生以下错误消息 Type C
  • Visual Studio 2019“始终显示解决方案”选项已删除

    Visual Studio 2017 及之前版本中曾经有一个选项可以关闭 始终显示解决方案 Visual Studio 2019 中缺少此设置 并且似乎已被删除 不幸的是 当我经常使用 打开网站 功能时 这会引起麻烦 因为 全部保存 提示创
  • Docker 100% 占据所有空间

    我安装 docker 的虚拟机已满 因此 docker 守护进程停止了 现在我看到了很多关于如何修复它的解决方案 但问题是它们都要求 docker 守护进程正在运行 docker system prune 但是当我想启动 docker 守护
  • 同步跨线程共享的对象,但不能同时访问

    假设我有一个带有字段的共享对象data 多个线程将共享对此对象的引用以便访问该字段 不过 线程永远不会同时访问该对象 我需要声明吗data不稳定 这种情况如下 A class Counter定义一个唯一的字段value和一种方法increm
  • NPM 7 工作区 - 多个 node_modules?

    我在使用 NPM 7 工作区运行应用程序时遇到问题 我期待着npm install从根文件夹创建一个node modules我的每个工作区的文件夹 类似于 Lerna 然而 当我跑步时npm install从根本上来说 我只得到一个node
  • 使用 clang-llvm 编译器在 CUDA 中添加对类似于 __shared__ 的内存类型的支持

    我正在努力添加类似于的新内存类型 shared 在 CUDA 中称为 noc 需要使用 clang llvm 进行编译 以下是实现对新内存类型的解析的步骤 引用来自answer https stackoverflow com questio
  • TestScope 协程测试中使用的高级示例

    有人可以提供使用新功能的高级示例吗TestScope and TestScope launch使用协程进行测试时 好像在新版里kotlinx coroutines test发布他们添加了一些称为TestScope去图书馆 此外 他们已经废弃
  • Log4j2 JSON 布局:添加 UTC 中的自定义日期字段

    Log4j2 支持JSON 布局 https logging apache org log4j 2 x manual layouts html JSONLayout 我在 log4j2 xml 中添加了一个额外的自定义字段
  • 在 esc 按下时关闭模式(纯 JS)

    我试图让我的模式关闭 有一个类将其设置为display block已删除 在 esc 压力机上 这是我尝试过的 它不起作用并且破坏了我的代码的其余部分 if modal classList contains modal visible do
  • 向数据库中的所有表添加位掩码有用吗?

    一位同事正在向我们所有的数据库表添加位掩码 理论上 这样我们就可以跟踪整个系统中每一行的某些属性 例如 该行是随系统附带的还是由客户在开始使用系统后添加的 该行是否已从表中删除 软删除 该行是否是一组行中的默认值 这是一个好主意吗 这种方法
  • 读取输入流的 N 行并以相反的顺序打印而不使用数组或列表类型结构?

    使用readLine 的方法BufferedReader 您可以在不使用列表或数组的情况下以相反的顺序打印流的前 N 行吗 我认为你可以通过递归来做到这一点 例如 void printReversed int n String line r
  • 添加 css 类以使用 @Html.DropDownList() 进行选择

    经过多年的 Webform 开发 我正在构建我的第一个 MVC 应用程序 但由于某种原因 我无法完成这项工作 Html DropDownList PriorityID String Empty new class textbox 错误信息
  • 在编写干净的 C 代码时利用 ARM 未对齐的内存访问

    ARM 处理器曾经无法正确处理未对齐的内存访问 ARMv5 及更低版本 就像是u32 var32 u32 ptr 只会失败 引发异常 如果ptr未正确对齐 4 字节 不过 编写这样的语句对于 x86 x64 来说效果很好 因为这些 CPU
  • 如何通过命令行填充 CosmosDB 集合?

    我正在为 Azure 开发一组脚本 我想知道如何使用以下命令填充 CosmosDB 集合az 目前 我知道如何创建数据库和集合 但如何初始化数据库 az cosmosdb create resource group RESOURCE GRO
  • GCC 相当于 PDB

    我有一个程序打算分发给最终用户 并希望从他们那里收到崩溃报告 如果我使用 MSVC 我会生成小型转储并将其发送给我 然后使用相应的 PDB 检查它们 至少获得有用的堆栈跟踪 使用 GCC 执行此操作相当于什么 我可以生成堆栈跟踪 但如果我希
  • cordova run android 执行良好。但Android 4.1.2无法启动该应用程序

    我开始使用 Cordova 5 0 0 cordova v 打印 5 0 0 开发 Android 应用程序 并在装有 Android 4 1 2 的 Moto Razr D1 上进行测试 顺便说一句 在 Windows 7 下 cordo
  • Django、ReportLab PDF 生成附加在电子邮件中

    使用 Django 和 ReportLab 生成 PDF 并将其附加到电子邮件的最佳方法是什么 我正在使用 SimpleDocTemplate 并且可以将生成的 PDF 附加到我的 HttpResponse 这很棒 但我无法找到如何将相同的