使用 nodemailer 和 reactjs 将邮件提交给用户的快速路由错误

Error in express route for submitting the mail to user using nodemailer and reactjs

我尝试向使用 reactjs 和 nodemailer 提交应用程序的用户发送邮件,但我收到以下错误消息,提示未找到路由。

Warning: Location "/contact?name=milan&email=xedikaka%40gmail.com&phone=9843698469&city=Biratnagar&state=biratnagar&company=company&title=developer&home-airport=Truckee+%2F+Tahoe+%28TRK%29&frequent-destinations=Monterey+%28MRY%29&travel-type=business&travel-frequency=daily&travel-prefs=Saturday" did not match any routes

这是我的代码

app.get('*', function(req, res) {
  var location = createLocation(req.url)
  match({routes: Routes, location: location}, function(error, redirectLocation, renderProps) {
    var handler = React.createElement(RoutingContext, objectAssign({}, renderProps))
    var content = React.renderToString(handler);
    var title = DocumentTitle.rewind();
    res.render('index', {content: content})
  })
});

app.post('/contact', function(req,res,next){
    var to = req.body.email;
    var transporter = nodemailer.createTransport({
        service:'Gmail',
        auth:{
            user:'******@gmail.com',
            pass:'***********'
        }
    });

     var mailOptions = {
      from: '<noreply@domain.io>',
      to: to,
      subject: 'Website contact form',
      text: 'Hello!'+req.body.name
    };

    transporter.sendMail(mailOptions, function(error,info){
        if(error){
            console.log('error is',error);
            res.redirect('/');
        }else{
            console.log('message sent');
            res.redirect('/');
        }
    })

});

var server = app.listen(port, function() {
  console.log('Server running on port ' + port);
});

JoinUsForm.js(/加入我们)

render: function() {
    return (
      <div className='join-us-form-wrapper'>
        <form action = "/contact" method="post" onValidSubmit={this.onSubmit} onValid={this.enableButton} onInvalid={this.disableButton}>

          <TextInput name='name' label='Full Name' placeHolder='Full Name' required/>
          <TextInput name='email' type='email' validations="isEmail" label='Your Email' placeHolder='Your Email' required/>
          <TextInput name='phone' type='phone' label='Your Phone' placeHolder='Your Phone' required/>

          <TextInput name='city' label='City' placeHolder='City' required/>

          <div className='input-wrapper'>
            <label htmlFor='state'>State</label>
            <input type='text' name='state' placeholder='State' />
          </div>

          <TextInput name='company' label='Company Name' placeHolder='Company Name'/>
          <TextInput name='title' label='Job Title' placeHolder='Job Title'/>


          <SelectInput name='home-airport' label='What is your home airport?' opts={homeAirportOptions} required />
          <MultiSelectInput name='frequent-destinations' label='Which Destinations Do You Travel to Frequently?' opts={destinationOptions} required />

          <SelectInput name='travel-type' label='Do you travel for business or pleasure?' opts={['business', 'pleasure']} required />
          <SelectInput name='travel-frequency' label='How often do you travel?' opts={['daily', 'weekly', 'monthly']} required />

          <SelectInput name='travel-prefs' label='Which days do you prefer to travel?' opts={travelPrefsOptions} required />


          <input type="submit" className='submit-button button' value='Submit Your Application'/>
        </form>
      </div>
    );
  }

});

module.exports = JoinUsForm;

我做错了什么?路线有什么问题?

更新:

我在表单中定义方法后收到这个新错误

因此,如果您的 express 版本 >= 4,请使用

var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({
    extended: true
}));
app.use(bodyParser.json());

这将解决您的问题。

谢谢