Более подробно изучив сказанное ChrisR в комментариях, я смог распознать, что с помощью node-mailer
я смогу указать строку в качестве содержимого для передачи в качестве вложения. В этом случае я просто отформатировал бы свои данные в csv
строку. Таким образом, я могу установить имя файла с расширением .csv
и передать строку данных. Это позволило мне отправить электронное письмо с вложением csv
, используя node-mailer
. Я смог сделать это с небольшой помощью из пакета papaparse
. Код указан ниже, на случай, если кому-то понадобится сделать что-то подобное в будущем.
myfile. js
...code above
// this would be called onClick on <button> element
TestEmail(){
// this would be the data you want to send as attachment
let temp = [
{
"Column 1": "1-1",
"Column 2": "1-2",
"Column 3": "1-3",
"Column 4": "1-4"
},
{
"Column 1": "2-1",
"Column 2": "2-2",
"Column 3": "2-3",
"Column 4": "2-4"
},
{
"Column 1": "3-1",
"Column 2": "3-2",
"Column 3": "3-3",
"Column 4": "3-4"
},
{
"Column 1": 4,
"Column 2": 5,
"Column 3": 6,
"Column 4": 7
}
]
let to = MYEMAIL;
let text =
`<div width="100%",style="text-align:left;">` +
`<h1 style="text-align:center;">Testing CSV</h1>` +
`</div >`;
let data = Papa.unparse(temp);
$.get("/sendRaw", { to: to, subject: 'Testing CSV', text: text, data: data }, function (data) { });
}
server. js
... code above
app.get('/sendRaw', (request, response) => {
var mailOptions = {
to: request.query.to,
bcc: request.query.bcc,
subject: request.query.subject,
text: request.query.text,
attachment: request.query.data
}
//console.log(mailOptions); Read up on NodeMailer for details.
smtpTransport.sendMail({ //email options
from: MYEMAIL
to: mailOptions.to,
bcc: MYEMAIL, // sending to itself
subject: mailOptions.subject, // subject
html: mailOptions.text, // body
attachments: [
{
filename: 'test.csv',
content: mailOptions.attachment,
}
]
}, function (error, response) { //callback
if (error) {
console.log(error);
} else {
console.log("Message sent");
//console.log("Amount of people getting this email: " + response.accepted.length);
}
smtpTransport.close(); // shut down the connection pool, no more messages. Comment this line out to continue sending emails.
});
})