Node.js senden Sie eine E-Mail mit Bild-Anhang mit nodemailer
Ich bin versucht, senden Sie eine E-Mail von einem post-request. Ich bin mit der Express-und nodemailer. Ich bin verwirrt durch 'fs' Meine E-Mail wird immer gesendet, aber das Bild ist nicht enthalten in der Anlage. Ich habe die docs, aber Sie alle scheinen zu senden statische Dateien, nicht die Dateien gestreamt werden, die von einem Formular anfordern.
var smtpTransport = nodemailer.createTransport("SMTP",{
service: "Gmail",
auth: {
user: "[email protected]",
pass: "password_for_gmail_address"
}
});
app.get('/', function(req, res){
res.send('<form method="post" enctype="multipart/form-data">'
+ '<p>Post Title: <input type="text" name="title"/></p>'
+ '<p>Post Content: <input type="text" name="content"/></p>'
+ '<p>Image: <input type="file" name="image"/></p>'
+ '<p><input type="submit" value="Upload"/></p>'
+ '</form>');
})
app.post('/', function(req, res, next){
var mailOptions = {
from: "[email protected]", //sender address
to: "[email protected]", //list of receivers
subject: req.body.title, //Subject line
text: req.body.content, //plaintext body
attachments:[
{
fileName: req.body.title,
streamSource: req.files.image
}
]
}
smtpTransport.sendMail(mailOptions, function(error, response){
if(error){
console.log(error);
res.send('Failed');
}else{
console.log("Message sent: " + response.message);
res.send('Worked');
}
});
});
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt
req.files.image
ist einFile
Objekt, nicht einen lesbaren stream, Sie würden erstellen müssen, Lesen-Datenstrom, der für Sie können Sie in der Anlage:dieser arbeitete für mich:
Statt
streamSource
versuchen Sie es mitcontents