Попытка отправить данные формы при отправке на себя с помощью nodeMailer - PullRequest
0 голосов
/ 09 апреля 2020

Я не получаю сообщение об ошибке при вводе данных в форму и отправке, но электронное письмо все еще не отправляется. У меня есть три файла, которые я использую. Я использовал этот учебник, чтобы сделать это так далеко https://blog.mailtrap.io/react-send-email/#Sending_emails_with_Nodemailer Я был бы признателен, если бы кто-нибудь взглянул и увидел, может ли он найти логическую ошибку. Мне нужен набор глаз. Заранее спасибо.

Вот форма. js файл.

import React from 'react';
import './style/blogFormSubmit.scss';
import {MyEmail, renderEmail} from 'react-html-email';
import axios from 'axios';
// import '../config.js';

export default class Form extends React.Component {
  constructor (props) {
    super (props);
    this.state = {feedback: '', name: '', email: '', title: ''};
    this.handleChange = this.handleChange.bind (this);
    this.handleSubmit = this.handleSubmit.bind (this);
    this.resetForm = this.resetForm.bind (this);
  }

  resetForm () {
    this.setState ({feedback: ''});
  }

  render () {
    return (
      <div className="form-container">
        <form>
          <label className="name-label"> Name</label>
          <input
            className="name"
            type="text"
            id="name"
            name="name"
            placeholder="Your name.."
            value={this.state.name}
            onChange={e => this.setState ({name: e.target.value})}
          />
          <label className="email-label">Email</label>
          <input
            className="email"
            type="email"
            id="email"
            name="email"
            placeholder="Your email"
            value={this.state.email}
            onChange={e => this.setState ({email: e.target.value})}
          />

          <label className="content-label">Content</label>
          <textarea
            className="content"
            id="messageHtml"
            name="messgeHtml"
            placeholder="Write Blog Post Here"
            onChange={e => this.setState ({messageHtml: e.target.value})}
            value={this.state.messageHtml}
          />
          <input
            className="submit"
            type="submit"
            onClick={e => this.handleSubmit (e)}
            value="Submit"
          />

        </form>
      </div>
    );
  }

  handleChange (event) {
    this.setState ({feedback: event.target.value});
  }

  handleSubmit () {
    const messageHtml = renderEmail (
      <MyEmail name={this.state.name}> {this.state.feedback}</MyEmail>
    );

    axios ({
      method: 'POST',
      url: 'http://localhost:3000/send',
      data: {
        name: this.state.name,
        email: this.state.email,
        messageHtml: messageHtml,
      },
    }).then (response => {
      if (response.data.msg === 'success') {
        console.log ('Email sent, awesome!');
        this.resetForm ();
      } else if (response.data.msg === 'fail') {
        console.log ('Oops, something went wrong. Try again');
      }
    });
  }
}

Вот сервер. js файл.

import './config.js';

const express = require ('express');
const PORT = process.env.PORT || 3000;
const app = express ();

const nodemailer = require ('nodemailer');
const creds = require ('./config');

var transport = {
  host: 'smtp.live.com', // e.g. smtp.gmail.com
  auth: {
    user: creds.USER,
    pass: creds.PASS,
  },
};

var transporter = nodemailer.createTransport (transport);

transporter.verify ((error, success) => {
  if (error) {
    console.log (error);
  } else {
    console.log ('All works fine, congratz!');
  }
});
app.use (express.json ());
app.post ('/send', (req, res, next) => {
  const name = req.body.name;
  const email = req.body.email;
  const message = req.body.messageHtml;

  var mail = {
    from: name,
    to: '{this.name}',
    subject: ' Bully-B-Gone Blog Submission',

    html: message,
  };

  transporter.sendMail (mail, (err, data) => {
    if (err) {
      res.json ({
        msg: 'fail',
      });
    } else {
      res.json ({
        msg: 'success',
      });
    }
  });
});

Вот конфигурация. js файл без моего адреса электронной почты и пароля, чтобы увидеть весь мир.

module.exports = {
  USER: 'MY_EMAIL',
  PASS: 'MY_PASSWORD',
};

...