无法使用nodemailer通过电子邮件发送图片附件

时间:2020-06-27 20:56:44

标签: javascript node.js nodemailer

我正在使用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)

0 个答案:

没有答案