相关疑难解决方法(0)

通过NodeJS发送带附件的邮件

NodeJS是否有用于发送带附件的邮件的库?

email attachment node.js

21
推荐指数
2
解决办法
4万
查看次数

Node.js和Nodemailer:我们可以将PDF文档附加到电子邮件中吗?

我想使用nodemailer和node.js附加PDF文档,但是,我找到的与nodemailer附件的唯一示例是.txt文件(这里).

有谁知道节点制作者是否支持PDF文档附件?

最初看起来可以附加PDF,但通过电子邮件到达的PDF文件似乎已损坏(见图).

在此输入图像描述

代码:(改编自Mahesh的答案)

fs.readFile('/filePath/fileName.pdf', function (err, data) {
if (err) throw err;                                                  
var mailOptions = {
    from: 'Test <formEmail@gmail.com>', // sender address                                   
    to: 'toPersonName <toEmail@gmail.com>', // list of receivers                                 
    subject: 'Attachment', // Subject line                                                 
    text: 'Hello world attachment test', // plaintext body                                                 
    html: '<b>Hello world attachment test HTML</b>', // html body                                               
    attachments: [
        {
            filename: 'fileName.pdf',                                         
            contentType: 'application/pdf'
        }]
};

// send mail with defined transport object                                                 
transporter.sendMail(mailOptions, function(error, info){
    if(error){
        return console.log(error);
    }
    console.log('Message sent: …
Run Code Online (Sandbox Code Playgroud)

javascript email-attachments node.js nodemailer

8
推荐指数
2
解决办法
1万
查看次数

Firebase Cloud Functions-创建pdf,存储到存储桶并通过邮件发送

我正在开发Firebase函数,当向实时数据库中添加新订单时会触发该函数。它要做的第一件事是创建pdf并将其通过管道传输到Google云存储桶。

在存储区流的.on(“ finish”)事件上,下一个函数启动,该函数应通过电子邮件将管道的pdf发送给客户。

一切似乎都正常,至少有一点。

首先,我遇到了一个问题,即所附的pdf始终为空。(不仅是空白。我还用记事本++打开了它,实际上它全是空的)。当我检查bucketFileStream.on(“ finished”)函数内的doc和bucketFileSream变量的长度均为0时。直接在doc.end之后检查doc var的长度为612。

然后,我更改了流程,即在sendOrderEmail函数中,我还从存储桶中新创建的File中打开了一个新的Read Stream。

现在,我至少在附件中得到了一些PDF内容,但是没有获得全部内容。

当我检查上传到存储桶的PDF时,看起来应该是这样。

我在Google上搜索了很多,找到了一些也针对该主题的答案,但是正如对这些问题的评论所看到的那样,它们并没有完全帮助。

我还与nodemailer文档一起检查了如何正确传递附件并按文档所述实施了附件。但是没有成功。

我认为邮件是在读取流完成之前发送的。

这是我使用的软件包版本:

  • “ @ google-cloud / storage”:“ 1.5.2”
  • “ @ types / pdfkit”:“ ^ 0.7.35”,
  • “ firebase-admin”:“ 5.8.0”,
  • “ firebase-functions”:“ ^ 0.7.3”
  • “ nodemailer”:“ 4.4.1”,

谁能告诉我我做错了什么,或提供一个使用此案例的使用当前软件包版本的有效示例?

这是令我疯狂的代码...

const functions = require("firebase-functions");
const admin = require("firebase-admin");
const nodemailer = require("nodemailer");
const pdfkit = require("pdfkit");
const storage = require("@google-cloud/storage")({projectId: `${PROJECT_ID}`})

const mailTransport = nodemailer.createTransport({
  host: "smtp.office365.com",
  port: 587,
  secureConnection: false,
  auth: {
    user: "userName", …
Run Code Online (Sandbox Code Playgroud)

node.js firebase google-cloud-functions

6
推荐指数
2
解决办法
4590
查看次数