Исключение SmtpException: расширение STARTTLS не поддерживается сервером, Django и AWS SES

#python #django #email #amazon-ses

#python #django #Адрес электронной почты #amazon-ses

Вопрос:

Я пытаюсь отправить электронное письмо через AWS SES с включенным tls. Для SES требуется включить протокол tls. Однако, когда я настраиваю свое smtp-соединение на использование tls, я получаю это исключение. И когда я не устанавливаю use_tls значение True , я получаю другое исключение, в котором указывается, что для использования ses требуется протокол tls.

Код

 from django.core.mail import get_connection  #1
# msg composed
connection = get_connection()                #2
connection.use_tls = True                    #3
connection.send_messages([msg, ])            #4
  

Обратная трассировка ошибки:

Файл «/home/myproject/venv/local/lib/python2.7/site-packages/django/core/mail/backends/smtp.py «, строка 51, в открытом файле self.connection.starttls() «/usr/lib/python2.7/smtplib.py «, строка 635, в starttls вызывает исключение SmtpException(«Расширение STARTTLS не поддерживается сервером».) Исключение SmtpException: расширение STARTTLS не поддерживается сервером

Комментарии:

1. Вы уверены, что подключаетесь к правильному порту? Обратите внимание, STARTTLS и SMTP через SSL — разные вещи . В то время как STARTTLS обычно доступен на стандартном SMTP-порту (25), SMTP через SSL обычно доступен на порту 465

2. @goncalopp: Я перепробовал каждое из 587, 465 и 25. Это единственные параметры порта SMTP, которые я вижу в SES. Все они выдают одну и ту же ошибку.

3. Я предполагаю, что это может быть временная проблема с Amazon SES, поскольку она начала работать сейчас.

4. Для порта 465 (smtps) вы должны использовать use_ssl, а не use_tls. use_tls предназначен только для STARTTLS (т. Е. обновить обычное соединение до SSL), но smtps подключается напрямую через SSL.