English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Django fornisce un motore leggero e facile da usare per inviare email. Come Python, devi importare smtplib. In Django è sufficiente importare django.core.mail. Per inviare email, edita il file settings.py del progetto e imposta le seguenti opzioni -
Creiamo una vista "sendSimpleEmail" per inviare una email semplice.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : it.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)
Ecco i dettagli del parametro send_mail -
subject − Oggetto dell'email message − Contenuto dell'email from_email − E-mail mittente recipient_list − Elenco degli indirizzi email del destinatario fail_silently − Booleano, se impostato a false, send_mail solleva un'eccezione quando si verifica un errore auth_user − Login dell'utente, se non definito in settings.py auth_password − La password dell'utente, se non definita in settings.py connection − Backend di E-mail html_message − (funzionalità aggiunta in Django 1.7), se presente, la mail sarà multipart/alternative.Facciamo una chiamata all'indirizzo della nostra vista -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : it.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'),)
Quindi, quando si accede a /myapp/simpleemail/ [email protected]alla pagina seguente quando si accede a /
Il metodo restituisce il numero di messaggi trasmessi con successo. È simile a send_mail ma richiede un ulteriore parametro; datatuple, per la nostra vista sendMassEmail −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : it.oldtoolbag.com # Date : 2020-08-08 from django.core.mail import send_mass_mail from django.http import HttpResponse def sendMassEmail(request, emailto): msg1 = ('subject 1', 'message 1', '[email protected]', [emailto1]) msg2 = ('subject 2', 'message 2', '[email protected]', [emailto2]) res = send_mass_mail((msg1, msg2), fail_silently = False) return HttpResponse('%s'%res)
Creiamo l'indirizzo del nostro view per l'accesso −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : it.oldtoolbag.com # Date : 2020-08-08 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 accediamo a /myapp/massemail/[email protected]/[email protected]/, otteniamo −
Dettagli del parametro send_mass_mail come segue −
datatuples − Tupla, ogni elemento è come (subject, message, from_email, recipient_list) fail_silently − Booleano, se impostato a false, send_mail solleva un'eccezione in caso di errore auth_user − Accesso dell'utente, se non impostato in settings.py auth_password − La password dell'utente, se non impostata in settings.py connection − Backend di E-mailCome puoi vedere nell'immagine sopra, due messaggi sono stati inviati con successo.
Nota - In questo esempio, utilizziamo il debuggingserver di smtpd di Python, che può essere avviato con il comando seguente −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : it.oldtoolbag.com # Date : 2020-08-08 $python -m smtpd -n -c DebuggingServer localhost:1025
Questo significa che tutte le email inviate saranno stampate sullo stdout e il server virtuale sarà in esecuzione su localhost:1025.
Invio di email agli amministratori e ai manager utilizzando i metodi mail_admins e mail_managers
Questi metodi inviano email agli amministratori del sito come definito nel file settings.py come opzione ADMINS, gli amministratori del sito sono definiti nel file settings.py come voce MANAGERS. Supponiamo che il nostro ADMINS e MANAGERS siano così:
ADMINS = (('polo', '[email protected]'),)
MANAGERS = (('popoli', '[email protected]'),)
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : it.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)
Il codice sopra invierà una mail a ogni amministratore definito nella parte ADMINS.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : it.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)
Il codice sopra invierà una mail a ogni amministratore definito nella parte MANAGERS.
Dettagli dei parametri −
Subject − Titolo dell'email. message − Oggetto dell'E-mail. fail_silently − Booleano, se impostato a false, send_mail solleva un'eccezione in caso di errore connection − Backend di E-mail. html_message − (funzionalità aggiunta in Django 1.7), se presente, la mail sarà multipart/alternative.Come inviare messaggi HTML in Django>=1.7 è molto semplice -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : it.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=")
Questo produrrà una email multipart/alternative.
Ma per Django<1.7 l'invio di email HTML viene completato attraverso la classe django.core.mail.mailMessage, quindi chiamiamo l'oggetto 'send'−
Creiamo una vista 'sendHTMLEmail' per inviare email HTML.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : it.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)
Classe di creazione del messaggio email con dettagli dei parametri −
Subject − Titolo dell'email. message − Email nel corpo HTML. from_email − Email mittente. to − Elenco degli indirizzi email dei destinatari. bcc − Elenco degli indirizzi email dei destinatari 'Copia Conoscenza'. connection − Backend di email.Creiamo l'indirizzo del view per l'accesso −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : it.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'),)
Quando si accede a /myapp/htmlemail/[email protected], si ottiene il seguente contenuto −
Questo viene fatto utilizzando il metodo 'attach' dell'oggetto EmailMessage.
Un'anteprima per inviare una email, allegati come segue −
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : it.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类型。