Цель
Отправка писем с помощью 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
Заранее спасибо:)