Я пытаюсь отправить подтверждение по электронной почте, чтобы пользователи могли подтвердить свою электронную почту.Через back-end и nodemailer пользователь получает электронное письмо сейчас.Но когда вы нажимаете на ссылку внутри письма, это показывает ошибку.Это потому, что Front-end является Angular и работает на localhost: 4200, а Node.js работает на localhost: 30000.Вот код:
const body = {
username: Helpers.firstUpper(value.username),
email: Helpers.lowerCase(value.email),
password: hash,
};
User.create(body)
.then(user => {
const token = jwt.sign({ data: user }, dbConfig.secret, {
expiresIn: '5h'
});
res.cookie('auth', token);
res
.status(HttpStatus.CREATED)
.json({ message: 'User created successfully', user, token });
var emailtoken = new emailToken({ _userId: user._id, emailtoken: crypto.randomBytes(16).toString('hex') });
emailtoken.save(function (err) {
if (err) { return res.status(500).send({ msg: err.message }); }
var transporter = nodemailer.createTransport({
service: 'Sendgrid',
auth: { api_key:'api key is here' }
});
var mailOptions = {
from: 'email@email.com',
to: user.email, subject: 'Account Verification Token',
text: 'Hello,\n\n' + 'Please verify your account by clicking the link: \nhttp:\/\/' + req.headers.host + '\/confirmation\/' + emailtoken.emailtoken
}
transporter.sendMail(mailOptions, function (err) {
})
})
})
.catch(err => {
res
.status(HttpStatus.INTERNAL_SERVER_ERROR)
.json({ message: 'Error occured' });
});
});
},
Я нашел что-то подобное в ответах на другие вопросы:
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:4200'); // Change this to your Angular 2 port number
res.setHeader('Access-Control-Request-Method', '*');
res.setHeader('Access-Control-Allow-Methods', 'POST');
res.setHeader('Access-Control-Allow-Headers', '*');
Где мне реализовать этот код?Кроме того, что я должен добавить в угловую часть, чтобы ссылка для подтверждения внутри электронной почты работала, как и ожидалось?