Отправить письмо с помощью nodemailer - PullRequest
0 голосов
/ 12 января 2020

Я сохраняю адрес электронной почты в mysql bdd, и я хотел бы отправить электронное письмо на этот адрес с помощью nodemailer. но я не могу получить электронную почту в конце. Как я могу получить адрес электронной почты от серверной части, пожалуйста?

Я использую сервер Apollo для своей серверной части, и я использую response-apollo для внешнего интерфейса. Я подключаюсь к своему серверу с топором ios. Но я не могу найти способ восстановить адрес электронной почты, введенный в веб-интерфейсе.

Мой код переднего плана:

const CREATE_USER = gql`
    mutation createUser($firstName: String!, $lastName: String!, $email: String!) {
        createUser(firstName: $firstName, lastName: $lastName, email: $email) {
            id
            firstName
            lastName
            email
        }
    }
`;

class DataInput extends Component {

  constructor(props) {
    super(props);
    this.state = {
      firstName: '',
      lastName: '',
      email: ''
    }
  }
  handleSubmit(e){
    e.preventDefault();
    axios({
      method: "POST", 
      url:"http://localhost:4000/graphql", 
      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.")
      }
    })
  }

    render() {
      const { firstName, lastName, email } = this.state
      return (
        <div>
          <div className="flex flex-column mt3">
            <input
              className="mb2"
              value={firstName}
              onChange={e => this.setState({ firstName: e.target.value })}
              type="text"
              placeholder="John"
            />
            <input
              className="mb2"
              value={lastName}
              onChange={e => this.setState({ lastName: e.target.value })}
              type="text"
              placeholder="Do"
            />
            <input
              className="mb2"
              value={email}
              onChange={e => this.setState({ email: e.target.value })}
              type="text"
              placeholder="your@email.com"
            />
        </div>
        <Mutation mutation={CREATE_USER} variables={{ firstName, lastName, email }}>
            { createUser => <button onClick={createUser}> Submit </button> }
        </Mutation>
        </div>
      )
    }

  }

И моя функция внутреннего интерфейса для отправки электронной почты:

const sendCertificate = () => {
    const transporter = nodemailer.createTransport({
        service: 'gmail',
        auth: {
            user: process.env.EMAIL,
            pass: process.env.PASSWORD,
        },
    });

    transporter.verify((error, success) => {
      if (error) {
        console.log(error);
      } else {
        console.log('Server is ready to take messages');
      }
    });

    transporter.sendMail(email, (err, data) => {
        if (err) {
            console.log(err)
        }
        else {
          console.log('Success');
        }

          transporter.sendMail({
            from: "sendcertificate@gmail.com",
            to: email,
            subject: "Submission was successful",
            text: `Hello ${firstName} ${lastName}\n`
          }, function(error, info){
            if(error) {
                  console.log(error);
            } else{
                  console.log('Message sent: ' + info.response);
            }
          });
        }
    )
}
...