Я сделал контактную форму для сайта ReactJS, который раньше работал отлично. Я не совсем уверен, что я изменил, но теперь, когда я получаю электронное письмо, оно отображает имя как неопределенное, тогда как электронная почта и сообщение отображаются правильно.
Вот моя контактная форма:
<form id="contact-form" onSubmit={this.handleSubmit.bind(this)} method="POST">
<input type="name" id="name" name="name" placeholder="Your Name" value={this.state.name} onChange={this.onNameChange.bind(this)}/>
<input type="email" id="email" name="email" placeholder="Your Email" value={this.state.email} onChange={this.onEmailChange.bind(this)}/>
<label>Send a message—even if it's to say hi—and I'll get back to you.</label>
<textarea type="subject" name="subject" onChange={this.onMessageChange.bind(this)} ></textarea>
<input type="submit" value="Submit" />
</form>
Это функции, которые я использовал + конструктор:
constructor(props) {
super(props);
this.state = {
name: "",
email: "",
message: "",
}
}
handleSubmit(e){
e.preventDefault();
axios({
method: "POST",
url:"http://localhost:3002/send",
data: this.state
}).then((response)=>{
if (response.data.status === 'success'){
alert("Message Sent.");
this.resetForm()
}else if(response.data.status === 'fail'){
alert("Message failed to send.")
}
})
}
resetForm(){
this.setState({name: "", email: "", message: ""})
}
onNameChange(event) {
this.setState({name: event.target.value})
}
onEmailChange(event) {
this.setState({email: event.target.value})
}
onMessageChange(event) {
this.setState({message: event.target.value})
}
Если кто-то может дать некоторые понимание того, что не так, было бы здорово, спасибо!
РЕДАКТИРОВАТЬ: о, я забыл добавить свой индекс. js.
var express = require('express');
var router = express.Router();
var nodemailer = require('nodemailer');
var cors = require('cors');
const creds = require('./config');
var transport = {
host: 'smtp.gmail.com', // Don’t forget to replace with the SMTP host of your provider
port: 465,
auth: {
user: creds.USER,
pass: creds.PASS
}
}
var transporter = nodemailer.createTransport(transport)
transporter.verify((error, success) => {
if (error) {
console.log(error);
} else {
console.log('Server is ready to take messages');
}
});
router.post('/send', (req, res, next) => {
var name = req.body.name
var email = req.body.email
var message = req.body.message
var content = `name: ${name} \n email: ${email} \n message: ${message} `
var mail = {
from: name,
to: 'something@domain.com', // Change to email address that you want to receive messages on
subject: 'New Message from Contact Form',
text: content
}
transporter.sendMail(mail, (err, data) => {
if (err) {
res.json({
status: 'fail'
})
} else {
res.json({
status: 'success'
})
}
})
})
const app = express()
app.use(cors())
app.use(express.json())
app.use('/', router)
app.listen(3002)