【发布时间】:2020-10-01 16:22:28
【问题描述】:
我正在尝试使用Nodemailer 通过电子邮件发送我的流数据,但由于某种原因,当我下载并查看其信息时,附件显示为0 kb。如何正确发送流及其数据作为附件?流应该包含PKPass 将响应作为附件发送是更好的选择吗?我正在使用passkit-generator 生成PKPass
const stream = examplePass.generate();
res.set({
'Content-Type': 'application/vnd.apple.pkpass',
'Content-disposition': `attachment; filename=${passName}.pkpass`,
});
stream.pipe(res);
//Send the receipt email
stream.on('finish', (attach) => {
let transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 587,
secure: false,
requireTLS: true,
auth: {
user: 'email4@gmail.com',
pass: 'password',
},
});
let mailOptions = {
from: 'email4@gmail.com',
to: 'emailTo1@gmail.com',
subject: 'You\'re on your way to ',
html: '<h1>Reciept email</h1>',
attachments: [
{
filename: 'Event.pkpass',
contentType: 'application/vnd.apple.pkpass',
content: stream,
},
],
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error.message);
}
console.log('success ' + info);
});
});
【问题讨论】:
-
通常需要等待流的“完成”事件触发,然后才能执行下一个任务。因此,一旦完成事件触发,您就可以发送电子邮件,显然可以使用承诺或回调。
-
@khan 我已经更新了我的问题。你能看看我仍然没有收到任何数据的通行证。
-
我不是流专家,但如果
examplePass.generate()返回一个可读流。我相信你可以设置content: stream。我在编辑之前阅读了您的问题,您可能已经尝试过,如果是这样,那么这不是解决方案。这是一个reference,关于如何使用nodemailer添加附件。 -
@Hangindev 我尝试设置
content: stream,但它仍然不起作用。我已经阅读了nodemailer文档,但无法让它与流附件一起使用。 -
@Hangindev 当我记录流时我得到
[object Object]这是一个可读流吗?
标签: node.js nodemailer