Обновление: Если я буду следовать инструкциям из Использование командной строки для отправки электронной почты с помощью SMTP-интерфейса Amazon SES , я смогу получить отличную отправку электронной почты с моего локального и моего ec2 instance.
Мы используем nodemailer для отправки электронной почты через SMTP. Когда мы настраиваем все, используя SMTP-пароль Gmail, все работает нормально.
Мы пытаемся перейти на AWS SES. Кажется, все настроено нормально (домены проверены, мы вышли из режима SANDBOX и используем учетные данные пользователя / пароль SMTP).
Мы используем точно такой же код и просто меняем местами из smtp user / pass / host в нашем файле учетных данных. При отправке почты с учетными данными SES мы получаем эту ошибку:
Email was not send due to the following error: [Error: 62024:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:c:\ws\deps\openssl\openssl\ssl\record\ssl3_record.c:332:
] {
library: 'SSL routines',
function: 'ssl3_get_record',
reason: 'wrong version number',
code: 'ESOCKET',
command: 'CONN'
}
В соответствии с этой проблемой GitHub проблема выглядит следующим образом:
Вы пытаетесь использовать TLS на порте, отличном от TLS, или используемая версия openssl не совместима с сервером.
Я не совсем уверен, что делать с этой информацией. Наш сертификат SSL находится на ELB.
Вот код, который отвечает за отправку фактического электронного письма:
"use strict";
const nodemailer = require("nodemailer");
const transporter = nodemailer.createTransport({
host: process.env.SMTP_HOST,
port: process.env.SMTP_PORT,
secure: process.env.SMTP_SECURE,
auth: {
user: process.env.SMTP_AUTH_USER,
pass: process.env.SMTP_AUTH_PASS
}
});
module.exports = {
sendMail: (to, subject, html, callback) => {
const mailOptions = {
from: "no-reply@xyz.com",
to,
subject,
html
};
transporter.sendMail(mailOptions, (err, info) => {
if (err) {
return callback(err);
}
return callback(null, info);
});
}
};