Я создаю контактную страницу, на которой пользовательский интерфейс отображается с помощью React. У меня есть форма, которая должна отправить электронное письмо при отправке. Вот код пользовательского интерфейса для обработки отправки:
handleSubmit = (event) => {
event.preventDefault();
this.setState({
disabled: true
});
Axios.post('http://localhost:3040/api/email', this.state)
.then( res => {
if(res.data.success){
this.setState({
disabled: false,
emailSent: true
});
} else{
this.setState({
disabled: false,
emailSent: false
});
}
})
.catch(err => {
this.setState({
disabled: false,
emailSent: false
});
});
}
API для отправки электронной почты написано в Node.js. Использовал @ sendgrid // mail для запуска отправки. При отладке я вижу, что значения формы достигают API, но при отправке выдает 403 Forbidden error. Вот код API:
app.post('/api/email', (req, res, next) => {
sendGrid.setApiKey('<Generated key in sendgrid>');
const msg = {
to: 'some@email.com',
from: req.body.email,
subject: 'Website Contact Page',
text: req.body.message
}
sendGrid.send(msg).then(result => {
res.status(200).json({
success: true
});
})
.catch(err => {
console.log('error: ', err);
res.status(401).json({
success: false
});
});
});
Ниже приведена трассировка ошибок, которую я получаю в консоли VSCode при отладке:
stack:"Error: Forbidden
at axios.then.catch.error (c:\react\portfolio-api\node_modules\@sendgrid\client\src\classes\client.js:105:29)
at process._tickCallback (internal/process/next_tick.js:68:7)"
proto : Error { constructor:, toString:, to JSON:}
Не уверен, почему он дает мне Запрещенную ошибку. Пожалуйста, дайте мне знать, если мне нужно добавить больше информации здесь. Заранее спасибо:)
РЕДАКТИРОВАТЬ: - Следуйте do c здесь в sendgrid, чтобы создать ключ API и использовать его в sendGrid.setApiKey ().