#javascript #node.js #reactjs
#javascript #node.js #reactjs
Вопрос:
Я использую mailgun для отправки электронной почты, но я получаю ошибку 404 (не найден). Вот моя работа
Клиентская сторона
this.state= {
message: "main message",
}
handeSendRequest(){
await fetch('/api/eMail', {method:'post', headers: {'Content-type' : 'application/json' }}, body: JSON.stringify(this.state)){
}
}
render(){
return(
<Button onClick={this.handeSendRequest} > Send it </Button>
)
}
emailRouter.js
const mailgun = require('mailgun-js')(configuration);
router.post('/api/eMail', async (req,res) => {
try {
let message = req.body.message;
sendEmail(message,function (err) {
if(err){
console.log(err);
}else{
console.log("Sent email");
}
});
res.status(200).json({
success: true,
msg: 'Success'
});
}
catch(err) {
res.status(400).json({
success: false,
msg: err
});
}
});
function mail(message, callback){
const mail = `<p>{message}</p>`;
var mail = mailcomposer({
from: 'from@email.com',
to: "to@email.com",
subject: "subject",
html: mail
});
mail.build(function(mailBuildError, message) {
var dataToSend = {
to: to@email.com,
message: message.toString('ascii')
};
mailgun.messages().sendMime(dataToSend, function (sendError, body) {
if (sendError) {
console.log(sendError);
}
callback(sendError);
});
});
}
Server.js
const app = express();
const emailUtil = require('./emailRouter.js');
app.use('/api/eMail', emailUtil);
Не уверен, почему, но я получаю эти ошибки http://localhost:3000/api/eMail 404 (Not Found)
. Похоже, что клиентская сторона верна, но серверная часть по какой-то причине не получает вызов. Как я могу изменить свою работу, чтобы электронное письмо могло быть успешно отправлено.
Комментарии:
1. Вы неправильно используете async / await на клиенте или сервере… Я бы посоветовал поискать правильный способ его использования…
Ответ №1:
А что, если вы просто зарегистрируетесь следующим образом: app.use(emailUtil);
потому что вы регистрируете оба / api / EMAIL в своем server.js и в вашем emailRouter.js
Тогда, я думаю, express хочет, чтобы вы запросили по / api / eMail / api / email
Комментарии:
1. Привет, Кристоф упоминает / api / eMail / api / eMail. например, localhost: 3000 / api / eMail / api / Электронная почта . В файле вашего сервера указано, что маршруты в emailUtil привязаны к / api / eMail / и в emailRouter.js файл, у вас есть /api / eMail/, следовательно, / api /eMail / api / email. Если вы отредактируете строку в файле сервера на app.use(‘/’, emailUtil);, тогда вы сможете перейти на localhost: 3000 /api / eMail