Ошибка Nodemailer 535 при отправке с удаленного сервера с .env - PullRequest
0 голосов
/ 05 марта 2020

Цель

Отправка писем с помощью nodemailer.

Проблема

Отправка электронной почты с удаленного сервера заканчивается ошибка 535 (неверные учетные данные 535). Я не использую Gmail!

Описание

Когда я вошел на сервер, там я вытащил приложение из своего хранилища, запустил npm install & npm build, скопировал файл .env с моего локального компьютера в удаленную папку, а затем запустите приложение с node или pm2. Когда я запускаю приложение локально, оно работает. На сервере Ubuntu 18.04 это не так. У меня есть другое приложение на сервере, и оно работает с той же настройкой (express, dotenv & nodemailer, установленное для бэкэнда). Порт, который я установил в .env, работает без проблем.

То, что я пробовал до сих пор:

  • Удалите всю удаленную папку и установите новую, как описано выше.
  • Установлено приложение на сервере в разных каталогах: var/www/myapp и home/user/myapp
  • Остановлено другое приложение на сервере
  • Отключен брандмауэр ufw
  • Попробовал другой emailaccount
  • Изменил пароль на простой, чтобы убедиться, что это не особый знак
  • Проверены настройки моего почтового провайдера. Никаких настроек безопасности или чего-то подобного мы не можем найти в Gmail

  • Вместо использования process.env.MAIL & process.env.MAIL_PW я пробовал без dotenv, и это сработало: "myaddress@online.de" & "mypassword". Это единственное, что до сих пор работало в этом приложении.

Кажется, что это та же проблема, что описана, например, здесь .

Вот так выглядит функция:

const nodemailer = require("nodemailer");

const transporter = nodemailer.createTransport({
  host: process.env.EMAIL_HOST,
  port: 465,
  secure: true,
  tls: {
    ciphers: "SSLv3",
    rejectUnauthorized: false
  },
  auth: {
    user: process.env.MAIL,
    pass: process.env.MAIL_PW
  }
});

const sendMail = mailData => {
  return new Promise((resolve, reject) => {
    const mailOptions = mailData;
    transporter.sendMail(mailOptions, (error, data) => {
      if (error) {
        reject(error);
        console.log(error);
      } else {
        console.log("Message sent: %s", data.messageId);
        console.log("Preview URL: %s", nodemailer.getTestMessageUrl(data));
        resolve(data);
      }
    });
  });
};

module.exports = sendMail;

Это файл .env:

EMAIL_HOST=smtp.1und1.de
MAIL=myadress@online.de
MAIL_PW=mypassword

PORT=2000

Вот файл nginx conf для этого приложения:

server {

        root         /home/neo/ehilfe/client/build;
        index index.html index.htm index.nginx-debian.html;

        server_name e-hilfe.com www.e-hilfe.com;

        proxy_set_header Host $http_host;

        location / {
        try_files $uri $uri/ /index.html;
        }

        location /api/ {
        proxy_pass http://localhost:2000/api/;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }

        listen [::]:443 ssl; # managed by Certbot
        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/e-hilfe.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/e-hilfe.com/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

        }

server  {

        if ($host = www.e-hilfe.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = e-hilfe.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


        listen 80;
        listen [::]:80;

        server_name e-hilfe.com www.e-hilfe.com;
        return 404; # managed by Certbot

Вот сообщение об ошибке, которое я получаю:

Error: Invalid login: 535 Authentication credentials invalid
    at SMTPConnection._formatError (/home/neo/ehilfe/node_modules/nodemailer/lib/smtp-connection/index.js:784:19)
    at SMTPConnection._actionAUTHComplete (/home/neo/ehilfe/node_modules/nodemailer/lib/smtp-connection/index.js:1523:34)
    at SMTPConnection.<anonymous> (/home/neo/ehilfe/node_modules/nodemailer/lib/smtp-connection/index.js:550:26)
    at SMTPConnection._processResponse (/home/neo/ehilfe/node_modules/nodemailer/lib/smtp-connection/index.js:942:20)
    at SMTPConnection._onData (/home/neo/ehilfe/node_modules/nodemailer/lib/smtp-connection/index.js:749:14)
    at TLSSocket.SMTPConnection._onSocketData (/home/neo/ehilfe/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)
    at TLSSocket.emit (events.js:223:5)
    at addChunk (_stream_readable.js:309:12)
    at readableAddChunk (_stream_readable.js:290:11)
    at TLSSocket.Readable.push (_stream_readable.js:224:10) {
  code: 'EAUTH',
  response: '535 Authentication credentials invalid',
  responseCode: 535,
  command: 'AUTH PLAIN'
}
Error: Invalid login: 535 Authentication credentials invalid
    at SMTPConnection._formatError (/home/neo/ehilfe/node_modules/nodemailer/lib/smtp-connection/index.js:784:19)
    at SMTPConnection._actionAUTHComplete (/home/neo/ehilfe/node_modules/nodemailer/lib/smtp-connection/index.js:1523:34)
    at SMTPConnection.<anonymous> (/home/neo/ehilfe/node_modules/nodemailer/lib/smtp-connection/index.js:550:26)
    at SMTPConnection._processResponse (/home/neo/ehilfe/node_modules/nodemailer/lib/smtp-connection/index.js:942:20)
    at SMTPConnection._onData (/home/neo/ehilfe/node_modules/nodemailer/lib/smtp-connection/index.js:749:14)
    at TLSSocket.SMTPConnection._onSocketData (/home/neo/ehilfe/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)
    at TLSSocket.emit (events.js:223:5)
    at addChunk (_stream_readable.js:309:12)
    at readableAddChunk (_stream_readable.js:290:11)
    at TLSSocket.Readable.push (_stream_readable.js:224:10) {
  code: 'EAUTH',
  response: '535 Authentication credentials invalid',
  responseCode: 535,
  command: 'AUTH PLAIN'
}

Может быть, кто-нибудь имеет опыт работы с такой проблемой и может мне помочь?

Наконец ссылка на репозиторий te: https://gitlab.com/leonp5/ehilfe

Заранее спасибо:)

...