从表单提交重定向后使用Flash消息

时间:2018-01-19 09:30:12

标签: node.js express nodemailer flash-message

我在网站上使用Express,我刚刚与nodemailer创建了一个联系表单。现在,我希望在提交表单后将闪存消息显示在联系页面上,并重定向回联系人页面。 但是我在如何使用这个

上苦苦挣扎

这是我使用Nodemailer发布表单的地方:

  router.get('includes/contact', function(req, res) {
  res.render('contact',{title:'Contact'});
});

//route to send the form
router.post('/contact/send', function(req, res) {

  var transporter = nodeMailer.createTransport({

  service : 'Gmail',
  auth : {
    user: xxxxxxx,
    pass: xxxxxxx
  }

  });

  var mailOptions = {
    from: req.body.name + ' <' + req.body.email + '>',
    to: 'xxxxxx@xxx.com',
    subject:'Test subject',
    text:'Test from '+ req.body.name+' Email: '+req.body.email+'Test: '+req.body.website+'Message: '+req.body.message,
    html:'<p><ul><li>Test from Naam: '+req.body.name+'</li><li>Email: '+req.body.email+'</li><li>Test: '+req.body.website+'</li><li>Message: '+req.body.message+'</li></ul>'
  };

  transporter.sendMail(mailOptions, function (err, info) {
    if(err) {
      console.log(err);
      res.redirect('/#contact');
    } else {
      console.log('Message send');
      res.redirect('/#contact');
    }
  });

});

我的联系方式:

.wrap
  .contact-block
    .title Contact
    form(method="post", action="contact/send")
      label Name:
        input(type="text", name="name", placeholder="Voer uw naam in")
      label Email:
        input(type="email", name="email", placeholder="Voer uw emailadres in")
      label Soort website
        select(type="select", name="website")
          option Website
          option CMS Website
          option Webshop
      label Bericht:
        textarea(name="message", placeholder="Bericht")
      button.btn-regular(type="submit") Verzenden

1 个答案:

答案 0 :(得分:0)

在致电api以便在此api&#39; / contact / send&#39;上提交表单时。将代码更改为:

transporter.sendMail(mailOptions, function (err, info) {
 if(err) {
  console.log(err);
  res.status(500).send({'status':1001});
 } else {
  console.log('Message send');
  res.status(200).send({'status':1000});
 }
});

这将返回json作为具有相应http状态的响应。根据您的回复状态,您可以显示隐藏Flash消息。无需重定向联系人提交表单。