Как отправить электронное письмо через Django? - PullRequest
140 голосов
/ 16 июня 2011

В моем settings.py есть следующее:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

# Host for sending e-mail.
EMAIL_HOST = 'localhost'

# Port for sending e-mail.
EMAIL_PORT = 1025

# Optional SMTP authentication information for EMAIL_HOST.
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_USE_TLS = False

Мой код электронной почты:

from django.core.mail import EmailMessage
email = EmailMessage('Hello', 'World', to=['user@gmail.com'])
email.send()

Конечно, если я настрою сервер отладки через python -m smtpd -n -c DebuggingServer localhost:1025, я смогу увидеть электронную почту в моем терминале.

Однако, как мне на самом деле отправить электронное письмо не на сервер отладки, а на user@gmail.com?

Прочитав ваши ответы, позвольте мне объяснить что-то прямо:

  1. Разве вы не можете использовать localhost (простой компьютер Ubuntu) для отправки электронной почты?

  2. Я думал, что в django 1.3 send_mail() несколько устарел и вместо него используется EmailMessage.send()? 1023 *

Ответы [ 11 ]

1 голос
/ 19 апреля 2018

Для SendGrid - Django В частности:

SendGrid Django Документы здесь

Установите эти переменные в

settings.py

EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = 'sendgrid_username'
EMAIL_HOST_PASSWORD = 'sendgrid_password'
EMAIL_PORT = 587
EMAIL_USE_TLS = True

в views.py

from django.core.mail import send_mail
send_mail('Subject here', 'Here is the message.', 'from@example.com', ['to@example.com'], fail_silently=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...