0
votes

Le courrier Django n'envoie pas de courrier

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>


4 commentaires

Si l'e-mail s'affiche dans la console, il semble que vous ayez EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' au lieu de EMAIL_BACKEND = 'django.core.mail .backends.smtp.EmailBackend '. J'ajouterais à partir des paramètres d'importation de django.conf; print (settings.EMAIL_BACKEND) à la méthode mail 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étez EMAIL_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.


3 Réponses :


0
votes
email_msg = EmailMessage(subject="subject",
                                     body="content",
                                     to=["xyz@gmail.com"])
email_msg.send()
use EmailMassage

0 commentaires

0
votes

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


0 commentaires

0
votes

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()


0 commentaires