Comment envoyer des emails via Django?
Dans mon settings.py
, j'ai le texte suivant:
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 email code:
from django.core.mail import EmailMessage
email = EmailMessage('Hello', 'World', to=['[email protected]'])
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 à [email protected]?
Après la lecture de vos réponses, permettez-moi de sortir quelque chose de tout droit:
-
Ne pouvez-vous pas utiliser localhost(simple pc sous ubuntu) pour envoyer des e-mails?
-
Je pensais que dans django 1.3
send_mail()
est un peu obsolète etEmailMessage.send()
est utilisé à la place?
- 1. Vous pouvez utiliser localhost si vous avez un serveur SMTP qui fonctionne là-bas. 2. Le mécanisme exact est sans importance. L'important, c'est que vous avez un serveur SMTP.
- donc, si j'ai installer postfix, je peux envoyer/recevoir des e-mails? Comment configurer postfix pour ce faire?
- Cette question est au-delà de la portée de ce site.
- stackoverflow.com/a/23402208/2351696
- Pourtant, SEO nous amène à cette page, Ignacio.
- Cette vidéo explique très bien toutes les étapes nécessaires.
- Ne pense pas que l'utilisation d'un service tiers est le correct réponse. Il n'est pas. Vous pouvez installer un MTA comme
sendmail
qui vous permettra d'envoyer un email à l'échelle locale.
Vous devez vous connecter pour publier un commentaire.
Envoyer l'e-mail pour un vrai serveur SMTP. Si vous ne souhaitez pas configurer votre propre alors vous pouvez trouver des entreprises qui fonctionnera pour vous, tels que Google eux-mêmes.
J'utilise Gmail comme mon serveur SMTP pour Django. Beaucoup plus facile que de traiter avec postfix ou tout autre serveur. Je ne suis pas dans le domaine de la gestion des serveurs de messagerie.
Dans settings.py:
NOTE: En 2016 Gmail ne permet pas le cas par défaut. Vous pouvez soit utiliser un service externe comme Sendgrid, ou vous pouvez suivre ce tutoriel de Google afin de réduire la sécurité mais de permettre à cette option: https://support.google.com/accounts/answer/6010255
send_mail()
. Il ne peut être qu'une adresse de courriel associée à votre compte gmail.django-admin.py startproject gmail
Modifier settings.py avec le code ci-dessous:
Exécuter en mode interactif:
python manage.py shell
Importer les EmailMessage module:
Envoyer l'e-mail:
Pour plus d'informations, consultez
send_mail
etEmailMessage
fonctionnalités dans documents.Mise à JOUR de Gmail
Aussi, si vous avez des problèmes pour envoyer des mails via gmail n'oubliez pas de vérifier ce guide de de google.
Dans les paramètres de votre compte Google, accédez à
Security > Account permissions > Access for less secure apps
et activer cette option.Aussi créer une Application spécifique de mot de passe pour votre compte gmail après que vous avez tourné sur 2-l'étape de vérification de l' pour elle.
Alors vous devriez utiliser app mot de passe spécifique à dans les paramètres. Donc, modifiez la ligne suivante:
Aussi, si vous êtes intéressés à envoyer des e-mails HTML, check this out.
Pour Django version 1.7, si les solutions ci-dessus ne fonctionnent pas alors essayez ce qui suit
dans settings.py ajouter
La dernière ligne a fait le tour de django 1.7
Mon site est hébergé sur Tumblr et j'ai privé e-mail enregistrée sur le même.
Ce sont les paramètres de ce qui a fonctionné pour moi:
Dans settings.py:
En shell:
Puis j'ai eu "1" comme O/P, c'est à dire la Réussite. Et je l'ai reçu le mail aussi. 🙂
Vous devez utiliser smtp comme backend dans settings.py
Si vous utilisez backend console, vous recevrez la sortie de la console
Et aussi ci-dessous des paramètres en plus
Si vous utilisez gmail pour cela, le programme d'installation 2-l'étape de vérification et de Demande de mot de passe spécifique à et de copier-coller ce mot de passe ci-dessus EMAIL_HOST_PASSWORD valeur.
J'ai trouvé à l'aide de SendGrid être la façon la plus simple de configurer l'envoi de mail avec Django. Voici comment cela 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 tous ensemble!
Pour envoyer des e-mail:
Si vous voulez Django de vous contacter dès qu'il y a une erreur de serveur interne 500, ajoutez les lignes suivantes à votre
settings.py
:Envoyant un courriel avec des SendGrid est gratuite jusqu'à 12k e-mails par mois.
En fait, j'avais fait depuis Django a tout à l'arrière. Ouvrir une légitime compte GMail & entrez les informations d'identification ici. Voici mon code -
smtplib
directement; Django va gérer la partie pour vous.send_mail
fonction & utiliser mon propre...send_mail()
est de savoir comment vous le feriez. Vous avez encore besoin pour assembler le message vous-même, mais vous n'avez pas à vous soucier de la SMTP bits.En retard, mais:
En plus de la
DEFAULT_FROM_EMAIL
fixer d'autres l'ont mentionné, et permettant les moins sécurisés des applications pour l'accès au compte, j'ai dû naviguer à https://accounts.google.com/DisplayUnlockCaptcha en étant connecté sous le compte en question pour obtenir de Django pour finalement s'authentifier.Je suis allé à cette URL via un tunnel SSH vers le serveur web, assurez-vous que l'adresse IP est la même, je ne suis pas totalement sûr que ce soit nécessaire, mais il ne peut pas nuire. Vous pouvez le faire comme ceci:
ssh -D 8080 -fN <username>@<host>
, puis configurer votre navigateur web pour utiliserlocalhost:8080
comme un proxy SOCKS.Vous pouvez utiliser "Test du Serveur de Messagerie de l'Outil" de test d'envoi de courrier électronique sur votre ordinateur ou localhost. Google et Télécharger "Test du Serveur de Messagerie de l'Outil" et le mettre en place.
Puis dans votre settings.py:
De shell:
Pour SendGrid - Django Spécifiquement:
SendGrid Django Docs ici
Ensemble de ces variables dans
settings.py
dans views.py