Блог

Python/Django: Отправка почты и проверка

Django на столько прекрасен, что ему нету предела в красоте. Он содержит все что вам необходимо для разработки Web приложений. Так же присутствует модули для работы с отправкой почты. Все ничего, вот такой вот: from django.core import mail.

В официальной документации описано, все очень доступно и понятно. Если не знаешь Английский язык, можно понять по примерам легко все понять. Почта отправляется с использованием SMTP хостом и портом, указанные в EMAIL_HOST и EMAIL_PORT в настройках вашего приложения. EMAIL_HOST_USER и EMAIL_HOST_PASSWORD настройки, если установлено, используется для проверки подлинности сервера SMTP, а также установление контроля EMAIL_USE_TLS ли защищенное соединение. То есть, все константы которые здесь перечислены должны быть в settings.py.
Чтобы отправлять с вашего локального сервера можно оставить настройки вот такого вида:
EMAIL_HOST = ‘localhost’
EMAIL_PORT = ‘1025’
EMAIL_HOST_USER = ”
EMAIL_HOST_PASSWORD = ”
EMAIL_USE_TLS = True

С settings.py мы завершили, теперь отправка почты.
Запускаем консоль, идем к нашему приложению и запускаем shell:

 python manage.py shell
>>> msg = EmailMessage('subject', '<b>Content</b>', "from@example.com", ["to@example.com"]) 
>>> msg.content_subtype = "html"
>>> msg.send()

! Если не настроен почтовый сервер или что-то похожее, вы получите ошибку, ниже написано как проверить при разработке

Для проверки работы “отправки почты” нужно в отдельном окне консоли запустить

python -m smtpd -n -c DebuggingServer localhost:1025

Каждый раз когда будете отправлять “demon” будет выводить на консоль содержимое письмо и весь заголовок.

Удачи.

Для ленивых:
http://blog.doughellmann.com/2008/10/pymotw-smtplib.html
https://docs.djangoproject.com/en/1.3/topics/email/