Я не получаю сообщение об ошибке при вводе данных в форму и отправке, но электронное письмо все еще не отправляется. У меня есть три файла, которые я использую. Я использовал этот учебник, чтобы сделать это так далеко 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',
};