use*_*ser 7 node.js nodemailer
我正在尝试使用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);
});
});
Run Code Online (Sandbox Code Playgroud)
看来在这种情况下,发送文件的唯一方法是读取整个流并将其作为字符串或缓冲区发送:
const stream = examplePass.generate();
res.set({
'Content-Type': 'application/vnd.apple.pkpass',
'Content-disposition': `attachment; filename=${passName}.pkpass`,
});
stream.pipe(res);
const chunks = [];
stream.on('data', chunk => {
chunks.push(chunk);
});
stream.on('end', () => {
const content = Buffer.concat(chunks);
const transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 587,
secure: false,
requireTLS: true,
auth: {
user: 'email4@gmail.com',
pass: 'password',
},
});
const 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
},
],
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error.message);
}
console.log('success:', info);
});
});
Run Code Online (Sandbox Code Playgroud)
但!如果文件很大,则需要小心使用此方法,因为它已完全加载到 RAM 中。
| 归档时间: |
|
| 查看次数: |
352 次 |
| 最近记录: |