使用 React/Nodejs 通过电子邮件发送生成的 PDF 文件

Posted

技术标签:

【中文标题】使用 React/Nodejs 通过电子邮件发送生成的 PDF 文件【英文标题】:Sending a generated PDF file via email using React/Nodejs 【发布时间】:2018-02-21 12:18:06 【问题描述】:

我正在创建一个应用程序,其目的是填写一份长表格,其中的详细信息保存到远程数据库,以便以后可以调用/编辑。当表格准备好发送时,我需要将其转换为 PDF 并通过电子邮件发送出去。最好,我想在不使用用户文件系统的情况下执行此操作,但如果这不可行,我可以使用它。

我一直在寻找转换为 PDF 的解决方案,例如 jsPDF,而对于电子邮件功能,标准似乎是使用 nodemailer。但是,我不确定如何将一个连接到另一个,特别是如果我要避开文件系统。

这是一个主要通过 iPad 和手机访问的网络应用程序。我的应用是在 React 中构建的,使用 Apollo/GraphQL 进行查询和一个 Express 服务器,显然都位于 Node 上。

这个问题有什么好的解决办法吗?在这一点上,这是一个关键时间问题,任何帮助将不胜感激。我一直在为此烦恼。

【问题讨论】:

这里似乎有些混乱...您想从服务器生成 PDF 并通过电子邮件发送它(可能由应用程序的请求触发),对吧?如果这是您想要的,请使用 pdfkit,保存到缓冲区,然后使用 nodemailer 将其附加到电子邮件中。 你说“我最好不使用用户的文件系统” -- 稍后 -- “我'不知道如何将一个连接到另一个,特别是如果我要避开文件系统“ ...请注意,使用jsPDF(或pdfkit)和nodemailer正在你的 服务器,所以即使你写了一个文件,它不在用户的系统上,它在你的系统上。 @StephenP 这是一个很好的观点,我完全忘记了将它保存在服务器端,呵呵。有点“duh”的时刻,感谢您指出这一点。 【参考方案1】:

我做你需要的所有事情,虽然过程不同,但本质上是一样的。

首先,您将在后端完成所有这些工作。用户将提交表单,您将在那里获取数据并从这里开始工作。获得数据后,您将需要创建一个 pdf 文件。为此,我使用了这个:https://www.npmjs.com/package/html-pdf 它按照它所说的做,就像一个魅力。为了使用它,您需要有一些 HTML。我使用ejs 获取HTML,更具体地说,是render 函数。 (您将数据传递给您要呈现的 ejs 文件,获取 html)。

一旦你有了 html,用那个模块把它转换成 pdf(把它保存到某个 tmp 文件夹,覆盖那里的任何东西或你想做的任何东西),你可以使用 nodemailer 发送文件(检查文档,发送附件只是添加数据的问题)。

这就是我所做的。当然必须有其他方法可以做到这一点。

【讨论】:

我一定是盯着这个看太久了,因为你刚才描述的一切,当你这样布置时,看起来都非常明显。虽然很高兴获得有关 PDF 创建工具的推荐,但我遇到了很多选择。我没有在我的应用程序中使用 ejs,只是 JSX,尽管这不应该改变我的流程。谢谢你把它布置好,我会给它旧大学的尝试,并报告我的结果。 :) 不,ejs 应该改变任何东西。因为这是在后端,而 ejs 文件将与 React 无关。它将仅用于 pdf

以上是关于使用 React/Nodejs 通过电子邮件发送生成的 PDF 文件的主要内容,如果未能解决你的问题,请参考以下文章

使用php发送电子邮件(phpmailer)

create-react-app + nodejs (express) 服务器

使用 codeigniter 电子邮件库通过电子邮件发送 ical 邀请

如何通过组帐户使用 Google Script 发送电子邮件

通过 SMTP 使用 AWS SES 发送电子邮件,错误 421

使用智能按钮创建 PayPal 订单 - (React/NodeJS)