Я объявил это в маршрутах:
router.get('/test',userController.test);
Функция в userController объявлена так:
exports.test = function (req, res) {
var transport = nodemailer.createTransport({
service: 'gmail',
auth: {
user: myuser,
pass: mypass
}
});
const message = {
from: 'me@gmail.com',
to: 'other@gmail.com',
subject: 'Subject here',
text: 'Text here',
html: '<html><body><div>html here</div></body></html>'
};
console.log("message:",message);
transport.sendMail(message, function(err, info) {
if (err) {
console.log(err)
} else {
console.log(info);
}
});
res.status(200).json({
test: 'test'
});
};
Теперь, когда я запускаю приложение с
node app.js
затем я получаю письмо в свой почтовый ящик.
Кроме того, на консоли выводится «информация»:
message: {
from: 'me@gmail.com',
to: 'other@gmail.com',
subject: 'Subject',
text: 'text here',
html: '<html><body><div>hmtl here</div></body></html>'
}
{
accepted: [ 'other@gmail.com' ],
rejected: [],
envelopeTime: 174,
messageTime: 374,
messageSize: 675,
response: '250 2.0.0 OK 1575235049 y6sm13785566ljm.95 - gsmtp',
envelope: {
from: 'me@gmail.com',
to: [ 'other@gmail.com' ]
},
messageId: '<somehash@gmail.com>'
Так что это выглядит хорошо. Однако, когда я запускаю это через mocha, никакая почта не приходит во входящие. И никакая информация не печатается в консоли. Как видите, если произошла ошибка, ее следует распечатать. Но это также не напечатано. Но при запуске теста я вижу в консоли результат
console.log("message:",message);
Но письмо все равно не отправляется. Похоже, что sendMail-функция никогда не достигается / не выполняется.
В чем может быть проблема?
Тестовый модуль просто вызывает конечную точку теста (здесь есть другие конечные точки, и все онивыполнено):
//This test is green
it("Succedes when test", done => {
chai
.request(app)
.get("/users/test")
.end((err, res) => {
expect(res).to.have.status(200);
done();
});
});