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.