J'ai créé une fonction qui enverrait du courrier à un utilisateur particulier lorsqu'il était redirigé vers une URL particulière. Cela fonctionnait jusqu'à aujourd'hui. Cependant, aujourd'hui, lorsqu'il est redirigé vers l'url, l'e-mail est affiché dans le terminal et non dans la boîte de réception du destinataire. Je joins la fonction de messagerie et les paramètres dans le code.
views.py
EMAIL_USE_TLS = True EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_HOST_USER = '*****@gmail.com' EMAIL_HOST_PASSWORD = '*********' EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
settings.py
def mail(request,pk): pr = UserProfile.objects.get(pk=pk) subject = "Greetings" msg = "Congratulations for your success" to = 'urvi0728@gmail.com' res = send_mail(subject, msg, settings.EMAIL_HOST_USER, [to]) if(res == 1): msg = "Mail Sent Successfuly" else: msg = "Mail could not be sent" return HttpResponse(msg)
p>
3 Réponses :
email_msg = EmailMessage(subject="subject", body="content", to=["xyz@gmail.com"]) email_msg.send() use EmailMassage
Essayez celui-ci. Cela fonctionne pour moi. Votre fichier settings.py semble correct.
from django.core.mail import EmailMessage SUBJECT = "Welcome To my site" def send_email(email, password): """ send email to new user with temp password""" msg = EmailMessage(SUBJECT, 'Your temporary login password here. {password}'.format(password=password), to=[email]) msg.send() return True
Essayez celui-ci
from django.template.loader import render_to_string message = render_to_string('path_to_your_template.html', { 'domain':current_site, 'email': request.user.email, 'data' : your_data }) send_message = EmailMessage(mail_subject, message, to=[to_email]) send_message.content_subtype = "html" send_message.send()
En tant que contenu, vous pouvez ajouter des dictionnaires ou d'autres données que vous souhaitez. Si vous souhaitez envoyer un modèle, vous pouvez utiliser
render_to_string
from django.core.mail import EmailMessage to_email = your_user_email mail_subject = your_message_subject message = your_content send_message = EmailMessage(mail_subject, message, to=[to_email]) send_message.content_subtype = "html" send_message.send()
Si l'e-mail s'affiche dans la console, il semble que vous ayez
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
au lieu deEMAIL_BACKEND = 'django.core.mail .backends.smtp.EmailBackend '
. J'ajouteraisà partir des paramètres d'importation de django.conf; print (settings.EMAIL_BACKEND)
à la méthodemail
pour vérifier la valeur réelle.Vous avez tagué votre question
django-mailer
. Utilisez-vous vraiment django-mailer ? Si tel est le cas, ajoutez plus d'informations à ce sujet à votre question.Dans la console, il affiche django.core.mail.backends.console.EmailBackend bien que je l'ai défini sur smtp.EmailBackend dans les paramètres.
Ensuite, vous devez savoir où vous l'avez défini sur
django.core.mail.backends.console.EmailBackend
. Peut-être que vous répétezEMAIL_BACKEND
plus loin dans vos paramètres, ou vous n'avez pas enregistré / archivé / déployé vos modifications, ou vous n'avez pas redémarré le serveur depuis le passage au backend smtp.