我正在使用nodemailer发送邮件。现在,我希望用户能够发送附件(带有电子邮件的图像。我尝试了几种方法,但对我来说没有用。即使在这里查看,但仍很难弄清楚它是如何工作的。因此,任何帮助都将非常有用。
这是我的contactPage表单
<form onsubmit="return phonenumberValidation()" method="POST" action="send">
<p>
<label>Naam</label>
<input type="text" name="name" required>
</p>
<p>
<label>Organisatie</label>
<input type="text" name="company">
</p>
<p>
<label>Email</label>
<input type="email" name="email" required >
</p>
<p>
<label>Telefoonnummer</label>
<input type="text" name="phone" id="phone" value="">
<span id="messages"></span>
</p>
<p class="full">
<label>Bericht</label>
<textarea name="message" rows="5" required></textarea>
</p>
<p class="full">
<input type="file" name="image" id="image" class="form-control">
</p>
<p class="full">
<input type="submit" value="Submit">
</p>
</form>
这是我的代码
app.post('/send', (req, res) =>{
const output = `
<p> You have a new contact request</p>
<h3>Contact Details</h3>
<ul>
<li>Name: ${req.body.name}</li>
<li>Company: ${req.body.company}</li>
<li>Email: ${req.body.email}</li>
<li>Phone: ${req.body.phone}</li>
<li>Image: ${req.body.image}</li>
</ul>
<h3>Message</h3>
<p>${req.body.message}</p>
`;
// create reusable transporter object using the default SMTP transport
let transporter = nodemailer.createTransport({
host: 'host',
port: 465,
secure: true, // true for 465, false for other ports
auth: {
user: 'user', // generated ethereal user
pass: 'password', // generated ethereal password
},
tls: {
rejectUnauthorized: false
}
});
// send mail with defined transport object
let mailOptions = {
from: '"Fred Foo ?" <email of sender>', // sender address
to: 'email', // list of receivers
subject: 'Test ✔', // Subject line
text: 'Hello world?', // plain text body
html: output, // html body
image: req.body.image,
attachtements: [
{
fileName: req.body.title+".jpg",
streamSource: fs.createReadStream(req.files.image.path)
}
]
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
console.log("Message sent: %s", info.messageId);
console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));
});
res.render('contactPage', {
message: 'We hebben uw aanvraag ontvangen en we zullen u binnen twee werkdagen beantwoorden'
});
我收到以下错误提示
TypeError: Cannot read property 'image' of undefined
at app.post (C:\Users\w_ema\MTaarten\app.js:149:49)
at Layer.handle [as handle_request] (C:\Users\w_ema\MTaarten\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\w_ema\MTaarten\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\w_ema\MTaarten\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\w_ema\MTaarten\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\w_ema\MTaarten\node_modules\express\lib\router\index.js:281:22
at Function.process_params (C:\Users\w_ema\MTaarten\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\w_ema\MTaarten\node_modules\express\lib\router\index.js:275:10)
at SessionStrategy.strategy.pass (C:\Users\w_ema\MTaarten\node_modules\passport\lib\middleware\authenticate.js:343:9)
at SessionStrategy.authenticate (C:\Users\w_ema\MTaarten\node_modules\passport\lib\strategies\session.js:75:10)