English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Отправка электронной почты Django

   Django предоставляет готовый, легкий в использовании лайтвэг для отправки электронной почты. Как и в Python, вам нужно импортировать smtplib. В Django вам нужно импортировать django.core.mail. Для отправки электронной почты отредактируйте файл settings.py проекта и установите следующие параметры −

EMAIL_HOST − SMTP сервер EMAIL_HOST_USER − учетные данные для входа на SMTP сервер     EMAIL_HOST_PASSWORD − пароль для учетных данных SMTP сервера     EMAIL_PORT − порт SMTP сервера     EMAIL_USE_TLS или   _SSL − если установлено в True,则为安全连接。    

отправка простого письма

позвольте нам создать представление "sendSimpleEmail", чтобы отправить простое письмо.

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ru.oldtoolbag.com
# Date: 2020-08-08
from django.core.mail import send_mail
 from django.http import HttpResponse
 def sendSimpleEmail(request, emailto):
    res = send_mail("hello paul", "comment tu vas?", "[email protected]", [emailto])
    return HttpResponse('%s'%res)

здесь содержится детализация параметров send_mail −

subject − заголовок электронной почты     message − тема сообщения электронной почты     from_email − отправитель электронной почты     recipient_list − список адресов электронной почты получателей     fail_silently − булево, если значение false, send_mail вызовет исключение при возникновении ошибки     auth_user − вход пользователя, если он не указан в settings.py     auth_password − пароль пользователя, если он не указан в settings.py     соединение − Backend электронной почты     html_message − (добавлено в Django 1.7), если он существует, почта будет multipart/alternative    

позвольте нам посетить URL нашего представления -

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ru.oldtoolbag.com
# Date: 2020-08-08

 urlpatterns = paterns('myapp.views', url(r'^simpleemail/(?P<emailto>
    [\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/', 
    'sendSimpleEmail', name = 'sendSimpleEmail'),)

Таким образом, при посещении /myapp/simpleemail/  [email protected]когда мы находимся на странице /, мы видим следующую страницу −  

Отправка нескольких писем с помощью send_mass_mail

Метод возвращает количество успешно переданных сообщений. Это как send_mail, но требует дополнительный параметр; datatuple, для нашего视图 sendMassEmail −

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ru.oldtoolbag.com
# Date: 2020-08-08
from django.core.mail import send_mass_mail
 from django.http import HttpResponse
 def sendMassEmail(request, emailto):
    msg1 = ('предмет 1', 'сообщение 1', '[email protected]', [emailto1])
    msg2 = ('предмет 2', 'сообщение 2', '[email protected]', [emailto2])
    res = send_mass_mail((msg1, msg2), fail_silently = False)
    return HttpResponse('%s'%res)

Давайте создадим адрес нашего视图 −

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ru.oldtoolbag.com
# Date: 2020-08-08

 urlpatterns = paterns('myapp.views', url(r'^massEmail/(?P<emailto1>
    [\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/(?P<emailto2>
    [\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})', 'sendMassEmail', name = 'sendMassEmail'),)

Когда мы посещаем /myapp/massemail/[email protected]/[email protected]/, мы получаем −  

Подробности параметра send_mass_mail приведены ниже −

datatuples    Тупляк, каждый элемент которого resembles (предмет, сообщение, от_электронной_почты, список_получателей)     fail_silently − Булево, если false, send_mail вызовет исключение при возникновении ошибки     auth_user Пользовательский вход, если он не установлен в settings.py     auth_password Пользовательский пароль, если он не установлен в settings.py     соединение − Backend электронной почты    

Как вы можете видеть на изображении выше, две сообщения успешно отправлены

Примечание - В этом примере мы используем debuggingserver Python's smtpd, который можно запустить с помощью следующей команды −

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ru.oldtoolbag.com
# Date: 2020-08-08
$python -m smtpd -n -c DebuggingServer localhost:1025

Это означает, что все отправленные письма будут выводиться в stdout и виртуальный сервер будет работать на localhost:1025

Отправка электронных писем администраторам и сотрудникам сайта с помощью методов mail_admins и mail_managers

Эти методы отправляют электронные письма администраторам сайта, как определено в опции ADMINS файла settings.py, администраторы сайта определены в разделе MANAGERS файла settings.py. Предположим, что наши ADMINS и MANAGERS выглядят следующим образом

ADMINS   ADMINS = (('polo', '[email protected]'),)

MANAGERS MANAGERS = (('popoli', '[email protected]'),)

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ru.oldtoolbag.com
# Date: 2020-08-08
from django.core.mail import mail_admins
 from django.http import HttpResponse
 def sendAdminsEmail(request):
    res = mail_admins('my subject', 'site is going down.')
    return HttpResponse('%s'%res)

Указанный код отправит электронную почту каждому администратору, определенному в разделе ADMINS

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ru.oldtoolbag.com
# Date: 2020-08-08
from django.core.mail import mail_managers
 from django.http import HttpResponse
 def sendManagersEmail(request):
    res = mail_managers('my subject 2', 'Change date on the site.')
    return HttpResponse('%s'%res)

Указанный код отправит электронную почту каждому администратору, определенному в разделе MANAGERS

Подробности параметров −

Subject − E-mail тема.     message − Тема электронной почты     fail_silently − Булево, если false, send_mail вызовет исключение при возникновении ошибки     соединение − Backend электронной почты     html_message − (добавлено в Django 1.7), если он существует, почта будет multipart/alternative    

Отправка HTML-электронной почты

В Django >= 1.7 отправка HTML-сообщений так же проста, как и отправка обычных сообщений

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ru.oldtoolbag.com
# Date: 2020-08-08
from django.core.mail import send_mail
 from django.http import HttpResponse
    res = send_mail("hello paul", "comment tu vas?", "[email protected]", 
          ["[email protected]"], html_message=")

Это создаст почту multipart/alternative.

Но для Django<1.7 отправка HTML-почты выполняется через класс django.core.mail.mailMessage, а затем вызывается объект «send» −

Давайте создадим представление «sendHTMLEmail» для отправки HTML-электронной почты.

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ru.oldtoolbag.com
# Date: 2020-08-08
from django.core.mail import EmailMessage
 from django.http import HttpResponse
 def sendHTMLEmail(request, emailto):
    html_content = "<strong>Comment tu vas?</strong>"
    email = EmailMessage("my subject", html_content, "[email protected]", [emailto])
    email.content_subtype = "html"
    res = email.send()
    return HttpResponse('%s'%res)

Класс создания электронной почты с деталями параметров −

Subject − E-mail тема.     message − E-mail в HTML теле.     from_email − E-mail отправителя.     to − Список адресов получателей.     bcc − Список адресов получателей «скрытой копии».     соединение − E-mail сервер.    

Давайте создадим адрес сайта для доступа к представлению −

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ru.oldtoolbag.com
# Date: 2020-08-08

 urlpatterns = patterns('myapp.views', url(r'^htmlemail/(?P<emailto>
    [\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/', 
    'sendHTMLEmail', name = 'sendHTMLEmail'),)

Когда мы посещаем /myapp/htmlemail/[email protected], мы получаем следующее −  

Отправка электронной почты с приложением

Это осуществляется с помощью метода «attach» объекта EmailMessage.

Одна функция предназначена для отправки электронной почты, приложенные файлы приведены ниже −

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ru.oldtoolbag.com
# Date: 2020-08-08
from django.core.mail import EmailMessage
 from django.http import HttpResponse
 def sendEmailWithAttach(request, emailto):
    html_content = "Comment tu vas?"
    email = EmailMessage("my subject", html_content, "[email protected]", emailto)
    email.content_subtype = "html"
    fd = open('manage.py', 'r')
    email.attach('manage.py', fd.read(), 'text/plain')
    res = email.send()
    return HttpResponse('%s'%res)

Подробные параметры в вложении −

filename − Имя файла вложения     content − Содержимое файла, приложенное.     mimetype − Тип содержимого вложения MIME.