使用 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());
这将解决您的问题。
谢谢
我尝试向使用 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());
这将解决您的问题。
谢谢