Отсылка почты через SMTP Яндекс.Почты в Django

С 16 сентября Яндекс Почта перешла полностью на протокол SSL для приема и отправки почты. С этого момента отправка почты через порт 25 сервера smtp.yandex.ru стало невозможным. Теперь для работы нужно подключаться к порту 465. И вот тут вылезла проблема. Стандартный SMTP бекэнд, который идет с Django не хочет подключаться. Ни с параметром use_tls, ни без него. Молча висит в ожидании чуда.

Решением стало использование своего SMTP бекэнда, который является копией стандартного с изменением всего одной строки. В строке 47 файла django.core.mail.backends.smtp.EmailBackend нужно заменить smtplib.SMTP на smtplib.SMTP_SSL.

self.connection = smtplib.SMTP_SSL(self.host, self.port,
                                   local_hostname=DNS_NAME.get_fqdn())

После этого все сразу заработало.

Версия Django: 1.6.5

 
comments powered by Disqus