89 votes

Nommer un compte email lors de l'envoi d'emails avec Django via Google Apps

Je suis en train d'envoyer des emails aux utilisateurs en utilisant Django via Google Apps.

Lorsque l'utilisateur reçoit des emails envoyés depuis l'application Django, ils sont de : do_not_reply@domain.example

en regardant tous les emails dans la boîte de réception, les gens voient l'expéditeur de l'email comme : do_not_reply ou do_not_reply@domain.example selon le client email utilisé

Si je me connecte à ce compte "do_not_reply" en utilisant le navigateur et Google Apps lui-même, puis envoie un email à moi-même, les emails sont de : Ne Pas Répondre

Par conséquent, le nom affiché pour l'expéditeur de l'email dans la boîte de réception est : Ne Pas Répondre

Dans Django, y a-t-il un moyen de joindre un "nom" au compte email utilisé pour envoyer des emails ?

J'ai examiné le mail.py de Django, mais je n'ai pas trouvé de solution http://code.djangoproject.com/browser/django/trunk/django/core/mail.py?rev=5548

Utilisant :

  • Django 1.1
  • Python 2.6
  • Ubuntu 9.1
  • settings.EMAIL_HOST = smtp.gmail.com

156voto

Gregor Müllegger Points 2957

Vous pouvez effectivement utiliser "Ne pas répondre " comme adresse e-mail à partir de laquelle vous envoyez.

Essayez ceci dans la console de votre projet Django pour tester s'il fonctionne également avec gapps :

>>> from django.core.mail import send_mail
>>> send_mail('sujet', 'message', "Ne pas répondre ", ['votreemail@example.com'])

1 votes

Merci d'avoir posté! J'aurais aimé voir ça hier parce que ça m'aurait fait gagner du temps. Je lisais juste la documentation sur <docs.djangoproject.com/en/dev/topics/email/…> et j'ai finalement lu attentivement le "from_email" et trouvé la même réponse que vous. J'allais justement poster une réponse ici quand j'ai vu la vôtre. En tout cas, merci encore! Content que ça fonctionne enfin.

12 votes

Vous pouvez également définir DEFAULT_FROM_EMAIL dans settings.py de cette manière : DEFAULT_FROM_EMAIL = 'Ne pas répondre '

0 votes

Assurez-vous simplement de ne pas définir le même email avec le nom d'utilisateur en tant qu'utilisateur authentifié, car cela échouera lors de l'authentification

0voto

Basant Kumar Points 119

En dehors de la méthode send_mail pour envoyer des e-mails, EmailMultiAlternatives peut également être utilisé pour envoyer des e-mails avec du contenu HTML et du texte en tant qu'alternative.

essayez ceci dans votre projet

from django.core.mail import EmailMultiAlternatives
text_content = "Bonjour le monde"
# définir le contenu HTML
email = EmailMultiAlternatives('sujet', text_content, 'Ne pas répondre ', ['youremail@example.com'])

email.attach_alternative(html_content, 'text/html')
email.send()

Cela enverra un courriel à youremail@example.com avec Ne pas répondre qui sera affiché comme nom au lieu de l'e-mail do_not_reply@domain.example.

-5voto

jujule Points 4353

J'utilise ce code pour envoyer via smtp gmail (en utilisant google apps). et les noms des expéditeurs sont OK

def send_mail_gapps(message, user, pwd, to):
    import smtplib
    mailServer = smtplib.SMTP("smtp.gmail.com", 587)
    mailServer.ehlo()
    mailServer.starttls()
    mailServer.ehlo()
    mailServer.login(user, pwd)
    mailServer.sendmail(user, to, message.as_string())
    mailServer.close()

0 votes

C'est en fait le même code que les classes EmailMessage de Django utilisent en arrière-plan. Quoi qu'il en soit, j'ai essayé votre méthode et l'e-mail a toujours do_not_reply comme nom de l'expéditeur. Merci d'avoir essayé quand même

3 votes

Et que dire des paramètres DEFAULT_EMAIL_FROM ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X