2016-12-18 7 views
0

Я создаю сайт хостинга на основе Django на VPS, и я смущен конфигурацией электронной почты Django. Мой сервер успешно отправляет мне технические письма (например, от fail2ban) с помощью sendmail. Однако все связанные с Django googling упоминают postfix, например. в this other answer.Можно ли использовать sendmail для send_mail Django?

Интересно:

  • Если я могу использовать Sendmail, а не постфикса;
  • Как настроить Django для использования почтовых функций моего сервера.

Любая помощь очень ценится.

FWIW, я на Ubuntu 16.04 и Django 1.10.

ответ

-1

Абсолютно вы можете. Вы можете добавить следующие коды в settings.py, чтобы включить функцию электронной почты в django.

# --------------------------------------- # 
# ------------  Email  ------------ # 
# --------------------------------------- # 

# ref: https://docs.djangoproject.com/en/dev/ref/settings/#email 
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 
EMAIL_HOST = 'smtp.example.com' 
EMAIL_PORT = 465 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'your password' 
EMAIL_USE_SSL = True 
SERVER_EMAIL = DEFAULT_FROM_EMAIL = EMAIL_HOST_USER 

Затем вы можете отправить по электронной почте с send_mail, как это:

from django.core.mail import send_mail 

send_mail(
    'Subject here', 
    'Here is the message.', 
    '[email protected]', 
    ['[email protected]'], 
    fail_silently=False, 
) 

Для более например об отправке по электронной почте, вы можете обратиться к Джанго document.

+0

Но у меня нет пароля или хоста электронной почты. Sendmail работает на сервере _my_. Поэтому я могу сделать что-то вроде «echo» Body »| mail -s "Subject" test @ gmail.com' в терминале и получать электронную почту в Gmail. fail2ban использует этот объект просто отлично, мне нужно заставить Django использовать его тоже. – texnic

+0

, так что если ваш gmail может получить вашу почту, какое имя/имя хоста для отправителя? – Enix

+0

Нет. Sendmail - это программное обеспечение почтового сервера, запущенное на моем собственном сервере. Поскольку я владею им, мне не нужны никакие учетные данные. Моя проблема в том, что в командной строке я могу использовать эту команду 'mail' без каких-либо учетных данных. Но Django, по-видимому, работает по-разному и нуждается в информации, как разговаривать с sendmail. – texnic

0

Похоже, что Django не предлагает бэкэнд для использования sendmail по умолчанию.

Я вижу два варианта:

  1. Используйте SMTP бэкенд и использовать «локальный» для SMTP-хоста (это на самом деле по умолчанию). Это работает только в том случае, если ваш почтовый сервер настроен на прием SMTP-соединений и позволяет осуществлять ретрансляцию для соединений с localhost.
  2. Используйте сторонний бэкэнд, который вызывает команду sendmail. Быстрый поиск появляется https://github.com/perenecabuto/django-sendmail-backend, который кажется, что он должен работать.

 Смежные вопросы

  • Нет связанных вопросов^_^