Я пытался отправить почту с Nodemailer. Nodemailer сам работает нормально. Но мне также нужны шаблоны, поэтому я немного погуглил и нашел email-templates . Я добавил его в проект, установил его. Все хорошо. Я создаю шаблон, и все работает нормально в режиме разработки, но не в производственном средстве (на живом сервере)
Когда я пытаюсь отправить письмо с моего живого сервера, Nodemailer выдает следующую ошибку:
{ Error: No recipients defined
at SMTPConnection._formatError (/Users/raphael/LocalDev/Avarius.net_Backend/node_modules/nodemailer/lib/smtp-connection/index.js:606:19)
at SMTPConnection._setEnvelope (/Users/raphael/LocalDev/Avarius.net_Backend/node_modules/nodemailer/lib/smtp-connection/index.js:815:34)
at SMTPConnection.send (/Users/raphael/LocalDev/Avarius.net_Backend/node_modules/nodemailer/lib/smtp-connection/index.js:431:14)
at sendMessage (/Users/raphael/LocalDev/Avarius.net_Backend/node_modules/nodemailer/lib/smtp-transport/index.js:226:28)
at connection.connect (/Users/raphael/LocalDev/Avarius.net_Backend/node_modules/nodemailer/lib/smtp-transport/index.js:287:21)
at SMTPConnection.once (/Users/raphael/LocalDev/Avarius.net_Backend/node_modules/nodemailer/lib/smtp-connection/index.js:188:17)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:106:13)
at SMTPConnection.emit (events.js:208:7)
at SMTPConnection._actionEHLO (/Users/raphael/LocalDev/Avarius.net_Backend/node_modules/nodemailer/lib/smtp-connection/index.js:1128:14)
at SMTPConnection._processResponse (/Users/raphael/LocalDev/Avarius.net_Backend/node_modules/nodemailer/lib/smtp-connection/index.js:762:20)
at SMTPConnection._onData (/Users/raphael/LocalDev/Avarius.net_Backend/node_modules/nodemailer/lib/smtp-connection/index.js:558:14)
at Socket._socket.on.chunk (/Users/raphael/LocalDev/Avarius.net_Backend/node_modules/nodemailer/lib/smtp-connection/index.js:510:47)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at addChunk (_stream_readable.js:263:12) code: 'EENVELOPE', command: 'API' }
Ошибка ясна. Получатели не определены, что означает, что я «пропустил» параметр «to» для Nodemailer. Но я не пропустил это. Nodemialer не может обнаружить его по Mailoptions (электронной почте), указанному в моей функции.
Итак, вот мой код.
Импорт необходимых модулей
const nodemailer = require('nodemailer');
const Email = require('email-templates');
Создание транспортера для узла
let transporter = nodemailer.createTransport({
host: 'localhost',
port: 25,
secure: false,
tls: {
rejectUnauthorized: false
}
});
Создание нового почтового шаблона с шаблоном электронной почты
const email = new Email({
template: '../Services/Mail/emails/activation',
message: {
from: from,
subject: subject,
to: userEmail,
},
locals: {
username: username,
url: url
},
transport: {
jsonTransport: true,
to: userEmail,
}
});
Отправка почты с Nodemailer
transporter.sendMail(email, (error, info) => {
if (error) {
console.log(email);
return console.log(error);
}
console.log('Message sent: %s', info.messageId);
console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info));
});
Следующая проблема заключается в том, что Nodemailer учебник для внешней рассылки почты устарел, и я понятия не имею, как это исправить. Кто-нибудь знает, как отправлять E-Mails с Nodemailer и email-шаблоны. Извините за доставленные неудобства.
Nodemailer Версия: 4.6.4
Email-шаблоны Версия: 3.6.0