Контактная форма с NodeJS и Express отображает имя как неопределенное? - PullRequest
0 голосов
/ 27 апреля 2020

Я сделал контактную форму для сайта 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)
...