Nodejs Nodemailer с почтовым клиентом

#javascript #node.js #nodemailer

Вопрос:

У меня возникли проблемы с тем, чтобы заставить мой nodejs nodemailer работать. Я не знаю точно, где я допустил ошибку, потому что я следовал примеру на странице github nodemail. В качестве интерфейса почтового сервера я использую mailcow. Я попробовал порты по умолчанию из Mailcow здесь, также с secureConnection false, но это не имело никакого значения.

Мой Код:

               var usermail = "test@mydomain.com"
              var transp = mail.createTransport("SMTP",{
                    host: "mail.mydomain.com",
                    port: 587,
                    secureConnection: true,
                    auth: {
                        user: process.env.email,
                        pass: process.env.passwd
                    }
                })

                transp.sendMail({
                    to: usermail,
                    subject: "test",
                    text: "test" 
                },    
                function(err,response){
                    if(err){
                        console.log(err);
                    }
                    console.log(response);
                });
 

Мой Код Ошибки:

 0|app  | TypeError: Cannot create property 'mailer' on string 'SMTP'
0|app  |     at new Mail (/home/node_modules/nodemailer/lib/mailer/index.js:45:33)
0|app  |     at Object.module.exports.createTransport (/home/node_modules/nodemailer/lib/nodemailer.js:53:14)
0|app  |     at /home/routes/system.js:876:35
0|app  |     at processTicksAndRejections (internal/process/task_queues.js:93:5)
 

Было бы здорово, если бы кто-нибудь помог мне там понять, что именно я там сделал не так.

Ответ №1:

Ошибка говорит вам, что он не может обрабатывать «SMTP» в качестве параметра. Согласно документации, вам не нужно указывать «SMTP», поскольку он ожидает объект с конфигурацией в качестве первого параметра:

  var transp = mail.createTransport({
                host: "mail.mydomain.com",
                port: 587,
                secureConnection: true,
                auth: {
                    user: process.env.email,
                    pass: process.env.passwd
                }
            })
 

Комментарии:

1. Похоже, разработчики, стоящие за nodemailer, вскоре изменили подпись createTransport . Возможно, именно по этой причине пример не является современным.