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éthodemailpour 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_BACKENDplus 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.