Отправка электронной почты без пароля с помощью nodemailer через zimbra smtp

Я использую nodemailer для отправки писем в веб-приложении, используя keystonejs в качестве cms. Веб-приложение хранится на одном сервере, а почтовый сервер - на другом, но для обмена данными по протоколу SMTP между серверами пароль не требуется. Теперь мне нужно отправлять электронные письма другим людям, когда это необходимо, используя общую учетную запись без поля пароля, потому что это не обязательно. Это моя конфигурация nodemailer:

var selfSignedConfig = {
            host: 'smtp.abc.cu',
            port: 25,
            secure: false, // use TLS
            auth: {
                user: email.email,
                pass: email.password //NOT REQUIRED
            },
            tls: {
                // do not fail on invalid certs
                rejectUnauthorized: false
            }
        };

        var transporter = nodemailer.createTransport(selfSignedConfig);
        // verify connection configuration

а также:

"email": {
    "email": "[email protected]",
    "password": ""
  }

Я застрял на этом, я пробовал с "password": "" и "password": " ", но ничего не работает. Почтовый сервер - Zimbra. Это дало мне следующую ошибку:

*-------------------------*
The server IS NOT READY to take the messages: Error: Invalid login: 535 5.7.8 Error: authentication failed: authentication failure
*-------------------------*

Привет...


person Juan Pereira    schedule 01.12.2017    source источник
comment
Согласно сообщению об ошибке, пароль требуется, даже если для rejectUnauthorized установлено значение false.   -  person Intervalia    schedule 01.12.2017
comment
да, но проблема в том, что нет пароля для учетной записи электронной почты, вот и все.   -  person Juan Pereira    schedule 02.12.2017


Ответы (1)


В нашем случае мы удалили поля tls, auth и secure, и это сработало на нашем SMTP-сервере.

Опции from, to устанавливались отдельно из опций почты.

Вы можете попробовать следующее:

    var nodemailer = require ('nodemailer'),
    _ = require ('lodash')


    var selfSignedConfig = {
        host: 'smtp.abc.cu',
        port: 25            
    };

    var transporter = nodemailer.createTransport(selfSignedConfig);

    var attachFiles = attachments?attachments:[];
    var attachObjArray = [];
    _.forEach(
            attachFiles,        
            filePath=>attachObjArray.push({path:filePath})
    );    

    var mailOptions = {
            from: fromEmail, // sender address (who sends)
            to: toEmail, // list of receivers (who receives)
            subject: subject, // Subject line
            html: body, // html body
            attachments:attachObjArray   //attachment path with file name     
    };

    // send mail with defined transport object
   transporter.sendMail(mailOptions, function(error, info) {
          if(error){
                 return console.log(error);
          } else {
                 console.log('Message sent: ' + info.response);
          }
          done();
   });
person overflower    schedule 07.12.2017
comment
Привет, Хуан, если это помогло тебе, прими это как ответ - person overflower; 10.09.2018