178 votes

Comment envoyer un email via Django?

dans mon 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

mon e-mail:

from django.core.mail import EmailMessage
email = EmailMessage('Hello', 'World', to=['user@gmail.com'])
email.send()

bien sûr, si je configurer un serveur débogage via python -m smtpd -n -c DebuggingServer localhost:1025, je peux voir le message dans mon terminal

Cependant, comment puis-je envoyer l'e-mail de ne pas le débogage du serveur, mais à user@gmail.com?

Après la lecture de vos réponses, laissez-moi les choses au point:

  1. Vous ne pouvez pas utiliser localhost(simple pc sous ubuntu) pour envoyer des e-mails?

  2. Je pensais que dans django 1.3 send_mail() est un peu obsolète et EmailMessage.send() est utilisée à la place?

182voto

Jordan Points 12780

J'utilise GMail comme serveur SMTP pour Django. Beaucoup plus facile que de traiter avec postfix ou un autre serveur. Je ne suis pas dans la gestion de serveurs de messagerie.

Dans settings.py:

 EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'me@gmail.com'
EMAIL_HOST_PASSWORD = 'password'
 

64voto

Ignacio Vazquez-Abrams Points 312628

Envoyez le courrier électronique à un vrai serveur SMTP. Si vous ne souhaitez pas créer le vôtre, vous pouvez trouver des entreprises qui en gèreront une, comme Google eux-mêmes.

3voto

Srikar Appal Points 26892

En fait, j'avais déjà fait cela depuis Django. Ouvrez un compte GMail légitime et entrez les informations d'identification ici. Voici mon code -

 from email import Encoders
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart

def sendmail(to, subject, text, attach=[], mtype='html'):
    ok = True
    gmail_user = settings.EMAIL_HOST_USER
    gmail_pwd  = settings.EMAIL_HOST_PASSWORD

    msg = MIMEMultipart('alternative')

    msg['From']    = gmail_user
    msg['To']      = to
    msg['Cc']      = 'you@gmail.com'
    msg['Subject'] = subject

    msg.attach(MIMEText(text, mtype))

    for a in attach:
        part = MIMEBase('application', 'octet-stream')
        part.set_payload(open(attach, 'rb').read())
        Encoders.encode_base64(part)
        part.add_header('Content-Disposition','attachment; filename="%s"' % os.path.basename(a))
        msg.attach(part)

    try:
        mailServer = smtplib.SMTP("smtp.gmail.com", 687)
        mailServer.ehlo()
        mailServer.starttls()
        mailServer.ehlo()
        mailServer.login(gmail_user, gmail_pwd)
        mailServer.sendmail(gmail_user, [to,msg['Cc']], msg.as_string())
        mailServer.close()
    except:
        ok = False
    return ok
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X