English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O Django oferece um motor leve e fácil de usar para enviar e-mails prontos. Semelhante ao Python, você precisa importar smtplib. No Django, você precisa importar django.core.mail. Para enviar e-mails, edite o arquivo settings.py do projeto e configure as seguintes opções −
Vamos criar uma vista "sendSimpleEmail" para enviar um e-mail simples.
# Nome do arquivo: example.py # Copyright : 2020 By w3codebox # Autor por: pt.oldtoolbag.com # Data : 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?", "xxx@w")3codebox.com", [emailto]) return HttpResponse('%s'%res)
Aqui estão os detalhes dos parâmetros do send_mail −
assunto − E-Assunto do e-mail message − E-Conteúdo do assunto do e-mail from_email − E-Remetente do e-mail lista_de_destinatários − Lista de endereços de e-mail dos destinatários fail_silently − Booleano, se for false, o send_mail lançará uma exceção ao ocorrer um erro auth_user − Login do usuário, se não estiver configurado em settings.py auth_password − Senha do usuário, se não estiver configurada em settings.py connection − E-backend de e-mail html_message − (Django1.7nova funcionalidade),se houver,esse e-mail será multipart/alternativa.Vamos acessar o URL da nossa vista -
# Nome do arquivo: example.py # Copyright : 2020 By w3codebox # Autor por: pt.oldtoolbag.com # Data : 2020-08-08 from django.conf.urls import patterns, url urlpatterns = patterns('myapp.views', url(r'^simpleemail/(?P<emailto> [\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}/', 'sendSimpleEmail', name='sendSimpleEmail'),)
Portanto, ao acessar /myapp/simpleemail/ [email protected]/ ao usar send_mass_mail, você será direcionado para a seguinte página −
Método que retorna a quantidade de mensagens enviadas com sucesso. Isso é semelhante ao send_mail, mas requer um parâmetro adicional; datatuple, a vista sendMassEmail é −
# Nome do arquivo: example.py # Copyright : 2020 By w3codebox # Autor por: pt.oldtoolbag.com # Data : 2020-08-08 from django.core.mail import send_mass_mail from django.http import HttpResponse def sendMassEmail(request, emailto): msg1 = ('assunto 1', 'mensagem 1', '[email protected]', [emailto1]) msg2 = ('assunto 2', 'mensagem 2', '[email protected]', [emailto2]) res = send_mass_mail((msg1, msg2), fail_silently=False) return HttpResponse('%s'%res)
Vamos criar o URL de acesso para nossa vista −
# Nome do arquivo: example.py # Copyright : 2020 By w3codebox # Autor por: pt.oldtoolbag.com # Data : 2020-08-08 from django.conf.urls import patterns, url urlpatterns = patterns('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'),)
Quando acessamos /myapp/massemail/[email protected]/[email protected]/, obtemos −
Parâmetros detalhados do send_mass_mail −
datatuples − Tupla, cada elemento é como (assunto, mensagem, from_email, lista_de_destinatários) fail_silently − Booleano,se for false,send_mail emitirá exceção em caso de erro auth_user − usuário de login,se não estiver configurado no settings.py auth_password − senha do usuário,se não estiver configurada no settings.py connection − E-backend de e-mailComo você pode ver na imagem acima, duas mensagens foram enviadas com sucesso.
Notas - Neste exemplo, usamos o debuggingserver smtpd do Python, que pode ser iniciado com o comando a seguir -
# Nome do arquivo: example.py # Copyright : 2020 By w3codebox # Autor por: pt.oldtoolbag.com # Data : 2020-08-08 $python -m smtpd -n -c DebuggingServer localhost:1025
Isso significa que todos os e-mails enviados serão impressos no stdout e o servidor virtual será executado no localhost:1025.
Enviar e-mails para administradores e gerentes usando os métodos mail_admins e mail_managers
Esses métodos enviam e-mails para os administradores do site conforme definido na opção ADMINS do arquivo settings.py,os administradores do site são definidos na seção MANAGERS do arquivo settings.py. Suponha que nossos ADMINS e MANAGERS sejam como follows-
ADMINS = (('polo', '[email protected]'),)
MANAGERS = (('popoli', '[email protected]'),)
# Nome do arquivo: example.py # Copyright : 2020 By w3codebox # Autor por: pt.oldtoolbag.com # Data : 2020-08-08 from django.core.mail import mail_admins from django.http import HttpResponse def enviarEmailAdmins(request): res = mail_admins('meu assunto', 'site está caindo.') return HttpResponse('%s'%res)
O código acima enviará um e-mail para cada administrador definido na parte ADMINS.
# Nome do arquivo: example.py # Copyright : 2020 By w3codebox # Autor por: pt.oldtoolbag.com # Data : 2020-08-08 from django.core.mail import mail_managers from django.http import HttpResponse def enviarEmailGerentes(request): res = mail_managers('meu assunto 2', 'Mudar a data no site.') return HttpResponse('%s'%res)
O código acima enviará e-mails para cada administrador definido na parte MANAGERS.
detalhes do parâmetro -
Subject − E-mail assunto. message − E-assunto do e-mail. fail_silently − Booleano,se for false,send_mail emitirá exceção em caso de erro connection − E-mail backend. html_message − (Django1.7nova funcionalidade),se houver,esse e-mail será multipart/alternativa.no Django>=1.7Enviar mensagem HTML é tão simples quanto -
# Nome do arquivo: example.py # Copyright : 2020 By w3codebox # Autor por: pt.oldtoolbag.com # Data : 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=")
Isso produzirá um multipart/e-mail alternativo.
mas para Django<1.7 O envio de e-mails HTML é feito pela classe django.core.mail.mailMessage, e então chama o objeto "send"−
Vamos criar uma vista "sendHTMLEmail" para enviar e-mails HTML.
# Nome do arquivo: example.py # Copyright : 2020 By w3codebox # Autor por: pt.oldtoolbag.com # Data : 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)
Classe de mensagem de e-mail que cria detalhes de parâmetros −
Subject − E-mail assunto. message − E-mail corpo em HTML. from_email − E-mail remetente. to − Lista de endereços de e-mail dos destinatários. bcc − Lista de endereços de e-mail para "Cópia Oculta". connection − E-mail backend.Vamos criar o endereço da vista de acesso −
# Nome do arquivo: example.py # Copyright : 2020 By w3codebox # Autor por: pt.oldtoolbag.com # Data : 2020-08-08 from django.conf.urls import patterns, url urlpatterns = patterns('myapp.views', url(r'^htmlemail/(?P<emailto> [\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}/', 'sendHTMLEmail', name = 'sendHTMLEmail'),)
Quando acessamos /myapp/htmlemail/[email protected], receberá o seguinte conteúdo −
Isso é feito usando o método "attach" do objeto EmailMessage.
Uma visão para enviar um e-mail, com anexos conforme abaixo −
# Nome do arquivo: example.py # Copyright : 2020 By w3codebox # Autor por: pt.oldtoolbag.com # Data : 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)
Parâmetros detalhados no anexo −
filename − Nome do arquivo anexado content − Conteúdo do arquivo, anexado. mimetype − Tipo de Conteúdo MIME do Anexo.