Заранее благодарю за помощь.
Я не уверен, как сделать следующее.У меня есть модуль для отправки электронных писем, и Config вводится в модуль с помощью внедрения зависимостей summon.js, но мне нужно использовать метод sendMail и передать ему параметр mailOptions.Вот пример кода:
'use strict';
const nodemailer = require('nodemailer');
const ejs = require('ejs');
const fs = require('fs');
module.exports = function(Configs) {
// create reusable transporter object using the default SMTP transport
let transporter = nodemailer.createTransport({
host: Configs.email.host,
port: Configs.email.port,
auth: {
user: Configs.email.user,
pass: Configs.email.pass
}
});
this.sendMail = function(mailOptions) {
mailOptions.to = Configs.mockEmail || mailOptions.to
mailOptions.from = Configs.email.user
return new Promise((resolve, reject) => {
if (mailOptions.template) {
ejs.renderFile('/../templates/' + mailOptions.template +
'.ejs', mailOptions.data, null, (err, html) => {
if (err) {
return reject(err)
}
resolve(html)
})
return
}
resolve()
}).then(html => {
mailOptions.html = html || mailOptions.html
return new Promise((resolve, reject) => {
// send mail with defined transport object
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return reject(error)
}
resolve(info)
})
})
})
}
return this
}
Затем я хочу использовать этот модуль:
const EmailUtil = require('email')
async function foo() {
// Do something async with await.
const mailOptions = {...}
EmailUtils.sendMail(mailOption);
}
Однако, это дает мне ошибку: TypeError: EmailUtils.sendMail is not a function
Примечание: я могу удалить module.export = function (Configs), но они не будут хорошими, поскольку мне нужно будет жестко указать путь к моему файлу конфигурации, и у меня будет несколько файлов конфигурации для каждой среды.Затем я хочу сохранить инъекцию зависимостей Summon.js при вызове sendMail из другого модуля.Спасибо
Есть идеи?Спасибо!