Dans mon settings.py
, j'ai ce qui suit:
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 code email:
from django.core.mail import EmailMessage
email = EmailMessage('Hello', 'World', to=['[email protected]'])
email.send()
Bien sûr, si je configure un serveur de débogage via python -m smtpd -n -c DebuggingServer localhost:1025
, je peux voir l'e-mail dans mon terminal.
Cependant, comment envoyer le courrier électronique non pas au serveur de débogage mais à [email protected]?
Après avoir lu vos réponses, permettez-moi de clarifier quelque chose:
Vous ne pouvez pas utiliser localhost (simple pc ubuntu) pour envoyer des e-mails?
Je pensais que dans django 1.3
send_mail()
est quelque peu obsolète etEmailMessage.send()
est utilisé à la place?
Réponses:
Envoyez l'e-mail à un vrai serveur SMTP. Si vous ne souhaitez pas créer le vôtre, vous pouvez trouver des entreprises qui en gèrent une pour vous, comme Google elles-mêmes.
la source
J'utilise Gmail comme serveur SMTP pour Django. Beaucoup plus facile que de traiter avec postfix ou tout autre serveur. Je ne suis pas dans la gestion de serveurs de messagerie.
Dans settings.py:
REMARQUE : en 2016, Gmail ne permet plus cela par défaut. Vous pouvez soit utiliser un service externe comme Sendgrid, soit suivre ce tutoriel de Google pour réduire la sécurité mais autoriser cette option: https://support.google.com/accounts/answer/6010255
la source
django-admin.py startproject gmail
Modifiez settings.py avec le code ci-dessous:
Exécutez le mode interactif:
python manage.py shell
Importez le module EmailMessage:
Envoyez l'e-mail:
Pour plus d'informations, vérifier
send_mail
etEmailMessage
fonctionnalités dans les documents .MISE À JOUR pour Gmail
Aussi, si vous rencontrez des problèmes pour envoyer des e-mails via gmail, n'oubliez pas de consulter ces guides de Google.
Dans les paramètres de votre compte Google, accédez à
Security > Account permissions > Access for less secure apps
et activez cette option.Créez également un mot de passe spécifique à l'application pour votre Gmail après avoir activé la vérification en deux étapes pour celui - ci.
Ensuite, vous devez utiliser un mot de passe spécifique à l'application dans les paramètres. Alors changez la ligne suivante:
Aussi, si vous souhaitez envoyer un e-mail HTML, vérifiez ceci .
la source
Mon site est hébergé sur
Godaddy
et j'ai un email privé enregistré sur le même. Voici les paramètres qui ont fonctionné pour moi:Dans settings.py:
En coque:
Ensuite, j'ai obtenu "1" comme O / P ie succès. Et j'ai aussi reçu le courrier. :)
la source
Pour Django version 1.7, si les solutions ci-dessus ne fonctionnent pas, essayez ce qui suit
dans settings.py ajouter
La dernière ligne a fait l'affaire pour django 1.7
la source
Vous devez utiliser smtp comme backend dans settings.py
Si vous utilisez le backend comme console, vous recevrez une sortie dans la console
Et aussi sous les paramètres en plus
Si vous utilisez gmail pour cela, configurez la vérification en 2 étapes et le mot de passe spécifique à l'application, puis copiez et collez ce mot de passe dans la valeur EMAIL_HOST_PASSWORD ci-dessus.
la source
J'ai trouvé que l'utilisation de SendGrid était le moyen le plus simple de configurer l'envoi d'e-mails avec Django. Voici comment ça fonctionne:
settings.py
:EMAIL_HOST = 'smtp.sendgrid.net' EMAIL_HOST_USER = '<your sendgrid username>' EMAIL_HOST_PASSWORD = '<your sendgrid password>' EMAIL_PORT = 587 EMAIL_USE_TLS = True
Et vous êtes prêt!
Pour envoyer un e-mail:
Si vous souhaitez que Django vous envoie un e-mail chaque fois qu'il y a une erreur de serveur interne 500, ajoutez ce qui suit à votre
settings.py
:L'envoi d'e-mails avec SendGrid est gratuit jusqu'à 12 000 e-mails par mois.
la source
J'avais fait cela depuis Django il y a quelque temps. Ouvrez un compte GMail légitime et entrez les informations d'identification ici. Voici mon code -
la source
smtplib
directement; Django s'occupera de cette partie pour vous.send_mail
fonction django par défaut et utilise ma propre ...send_mail()
est comment vous le feriez. Vous devez toujours assembler le message vous-même, mais vous n'avez pas à vous soucier des bits SMTP.En retard, mais:
En plus du
DEFAULT_FROM_EMAIL
correctif que d'autres ont mentionné et permettant aux applications moins sécurisées d'accéder au compte, j'ai dû accéder à https://accounts.google.com/DisplayUnlockCaptcha en étant connecté en tant que compte en question pour que Django s'authentifie enfin. .Je suis allé à cette URL via un tunnel SSH vers le serveur Web pour m'assurer que l'adresse IP était la même; Je ne sais pas vraiment si c'est nécessaire mais ça ne peut pas faire de mal. Vous pouvez le faire comme ceci:,
ssh -D 8080 -fN <username>@<host>
puis configurez votre navigateur Web pour l'utiliserlocalhost:8080
comme proxy SOCKS.la source
Vous pouvez utiliser "Test Mail Server Tool" pour tester l'envoi d'e-mails sur votre ordinateur ou localhost. Google et téléchargez "Test Mail Server Tool" et configurez-le.
Puis dans votre settings.py:
De la coque:
la source
Pour SendGrid - Django en particulier:
SendGrid Django Docs ici
Définissez ces variables dans
settings.py
dans views.py
la source