Openssl проблема при отправке электронной почты через AWS SES - PullRequest
0 голосов
/ 27 февраля 2020

Обновление: Если я буду следовать инструкциям из Использование командной строки для отправки электронной почты с помощью 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);
    });
  }
};
...