По моему у 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?
Прочитав ваши ответы, позвольте мне получить кое-что прямо:
Разве вы не можете использовать localhost (простой компьютер с Ubuntu) для отправки электронной почты?
Я думал, что в Django 1.3
send_mail()
несколько устарела иEmailMessage.send()
используется вместо этого?
Ответы:
Отправьте письмо на настоящий SMTP-сервер. Если вы не хотите настраивать свою собственную систему, то вы можете найти компании, которые будут ее использовать, например, Google.
источник
Я использую Gmail в качестве SMTP-сервера для Django. Гораздо проще, чем иметь дело с postfix или любым другим сервером. Я не занимаюсь управлением почтовыми серверами.
В settings.py:
ПРИМЕЧАНИЕ . В 2016 году Gmail по умолчанию больше этого не разрешает. Вы можете использовать внешнюю службу, такую как Sendgrid, или следовать этому руководству от Google, чтобы уменьшить безопасность, но разрешите эту опцию: https://support.google.com/accounts/answer/6010255.
источник
django-admin.py startproject gmail
Отредактируйте settings.py с кодом ниже:
Запустить интерактивный режим:
python manage.py shell
Импортируйте модуль EmailMessage:
Отправить письмо:
Для получения дополнительной информации, проверьте
send_mail
иEmailMessage
функции в документах .ОБНОВЛЕНИЕ для Gmail
Также, если у вас есть проблемы с отправкой электронной почты через gmail, не забудьте проверить это руководство от Google.
В настройках своего аккаунта Google перейдите
Security > Account permissions > Access for less secure apps
и включите эту опцию.Также создайте пароль для своего приложения в приложении Gmail после включения двухэтапной проверки .
Затем вы должны использовать конкретный пароль приложения в настройках. Поэтому измените следующую строку:
Также, если вы заинтересованы в отправке электронной почты в формате HTML, проверьте это .
источник
Мой сайт размещен,
Godaddy
и у меня есть личный адрес электронной почты, зарегистрированный на том же. Вот настройки, которые работали для меня:В settings.py:
В ракушке:
Тогда я получил «1» в качестве O / P, т.е. Успех. И я получил почту тоже. :)
источник
Для Django версии 1.7, если вышеуказанные решения не работают, попробуйте следующее
в settings.py добавить
Последняя строка сделала трюк для Джанго 1.7
источник
Вам нужно использовать smtp в качестве бэкэнда в settings.py
Если вы используете бэкэнд в качестве консоли, вы получите вывод в консоли
А также ниже настроек в дополнение
Если вы используете для этого gmail , настройте двухэтапную проверку и пароль для конкретного приложения, а затем скопируйте и вставьте этот пароль в значение EMAIL_HOST_PASSWORD, указанное выше.
источник
Я обнаружил, что использование SendGrid - это самый простой способ настроить отправку электронной почты с помощью Django. Вот как это работает:
settings.py
:EMAIL_HOST = 'smtp.sendgrid.net' EMAIL_HOST_USER = '<your sendgrid username>' EMAIL_HOST_PASSWORD = '<your sendgrid password>' EMAIL_PORT = 587 EMAIL_USE_TLS = True
И все готово!
Чтобы отправить электронное письмо:
Если вы хотите, чтобы Django отправлял вам электронные письма при возникновении внутренней ошибки 500, добавьте следующее к вашему
settings.py
:Отправка электронной почты с помощью SendGrid бесплатна до 12 тысяч электронных писем в месяц.
источник
Я действительно сделал это от Джанго некоторое время назад. Откройте законную учетную запись GMail и введите учетные данные здесь. Вот мой код -
источник
smtplib
напрямую; Джанго справится с этой частью за вас.send_mail
send_mail()
как бы вы это сделали Вам все еще нужно собрать сообщение самостоятельно, но вам не нужно беспокоиться о битах SMTP.Поздно, но:
В дополнение к
DEFAULT_FROM_EMAIL
исправлению, о котором упоминали другие, и позволяющему менее защищенным приложениям получать доступ к учетной записи, мне пришлось перейти на страницу https://accounts.google.com/DisplayUnlockCaptcha во время входа в качестве рассматриваемой учетной записи, чтобы Django окончательно аутентифицировался ,Я перешел по этому URL через туннель SSH к веб-серверу, чтобы убедиться, что IP-адрес тот же; Я не совсем уверен, если это необходимо, но это не повредит. Вы можете сделать это следующим образом:, а
ssh -D 8080 -fN <username>@<host>
затем настроить свой веб-браузер на использованиеlocalhost:8080
в качестве прокси-сервера SOCKS.источник
Вы можете использовать «Test Mail Server Tool» для проверки отправки электронной почты на вашем компьютере или локальном хосте. Google и загрузите «Test Mail Server Tool» и настройте его.
Тогда в вашем settings.py:
Из оболочки:
источник
Для SendGrid - Django В частности:
SendGrid Django Документы здесь
Установите эти переменные в
settings.py
в views.py
источник