Geben Sie dem E-Mail-Konto einen Namen, wenn Sie E-Mails mit Django über Google Apps senden


84

Ich sende E-Mails an Benutzer, die Django über Google Apps verwenden.

Wenn der Benutzer E-Mails erhält, die von der Django-App gesendet wurden, stammen diese von:
do_not_reply@domain.com

Wenn Sie alle E-Mails im Posteingang anzeigen, sehen die Benutzer den Absender der E-Mail als:
do_not_replyoder do_not_reply@domain.comabhängig vom verwendeten E-Mail-Client

Wenn ich mich mit dem Browser und Google Apps selbst bei diesem Konto "do_not_reply" anmelde und dann eine E-Mail an mich selbst sende, stammen die E-Mails von:
Dont Reply<do_not_reply@domain.com>

Der im Posteingang angezeigte Name für den Absender der E-Mail lautet daher:
Dont Reply

Gibt es in Django eine Möglichkeit, dem E-Mail-Konto, mit dem E-Mails gesendet werden, einen "Namen" zuzuweisen?

Ich habe Djangos mail.py überprüft, hatte aber kein Glück, eine Lösung zu finden
http://code.djangoproject.com/browser/django/trunk/django/core/mail.py?rev=5548

Verwenden von:
Django 1.1
Python 2.6
Ubuntu 9.1
settings.EMAIL_HOST = 'smtp.gmail.com'

Vielen Dank

Antworten:


144

Sie können tatsächlich "Dont Reply <do_not_reply@domain.com>"die E-Mail-Adresse verwenden, von der Sie senden.

Versuchen Sie dies in der Shell Ihres Django-Projekts, um zu testen, ob es auch mit Gapps funktioniert:

>>> from django.core.mail import send_mail
>>> send_mail('subject', 'message', 'Dont Reply <do_not_reply@domain.com>', ['youremail@example.com'])

1
Danke fürs Schreiben! Ich wünschte, ich hätte das gestern b / c gesehen, es hätte mir einige Zeit gespart. Ich habe gerade die Dokumentation unter < docs.djangoproject.com/de/dev/topics/email/… > gelesen und schließlich die "from_email" genauer gelesen und die gleiche Antwort wie Sie gefunden. Ich bin gerade hierher gekommen, um eine Antwort zu schreiben, als ich deine sah. Trotzdem nochmals vielen Dank!
Ich bin

10
Sie können DEFAULT_FROM_EMAIL auch auf settings.py wie folgt einstellen: DEFAULT_FROM_EMAIL = 'Dont Reply <do_not_reply@domain.com>'
Marc Tudurí

Stellen Sie nur sicher, dass Sie nicht dieselbe E-Mail mit dem Namen auth_user festlegen, da dies bei der Authentifizierung fehlschlägt
iamkhush

@iamkhush - Was meinen Sie setting the same email with name as aut_user. Ich erhalte einen Authentifizierungsfehler. Ich konnte nicht verstehen warum?
PythonEnthusiast

0

Neben der send_mail-Methode zum Senden von E-Mails können mit EmailMultiAlternatives auch E-Mails mit HTML-Inhalten und alternativ Textinhalten gesendet werden.

Versuchen Sie dies in Ihrem Projekt

from django.core.mail import EmailMultiAlternatives
text_content = "Hello World"
# set html_content  
email = EmailMultiAlternatives('subject', text_content, 'Dont Reply <do_not_replay@domain.com>', ['youremail@example.com'])

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

Dadurch wird eine E-Mail an youremail@example.com gesendet, wobei "Nicht antworten" als Name anstelle der E-Mail "do_not_replay@domain.com" angezeigt wird.


-5

Ich verwende diesen Code zum Senden über Google Mail-SMTP (mithilfe von Google Apps). und Absendernamen sind 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()

Dies ist tatsächlich derselbe Code, den die EmailMessage-Klassen von Django im Hintergrund verwenden. Unabhängig davon habe ich Ihre Methode ausprobiert und die E-Mail hat immer noch den do_not_replyNamen des Absenders. Vielen Dank für den Versuch
Rfadams

3
und was ist mit settings.DEFAULT_EMAIL_FROM?
Jujule
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.