Nadanie kontu e-mail nazwy podczas wysyłania e-maili z Django przez Google Apps


84

Wysyłam e-maile do użytkowników używających Django przez Google Apps.

Gdy użytkownik otrzymuje e-maile wysłane z aplikacji Django, pochodzą one z:
do_not_reply@domain.com

patrząc na wszystkie e-maile w skrzynce odbiorczej, ludzie widzą nadawcę e-maila jako:
do_not_replylub w do_not_reply@domain.comzależności od używanego klienta poczty e-mail

Jeśli zaloguję się na to konto „do_not_reply” za pomocą przeglądarki i samej usługi Google Apps, a następnie wyślę do siebie wiadomość e-mail, będą one pochodzić z:
Dont Reply<do_not_reply@domain.com>

W rezultacie nazwa wyświetlana nadawcy wiadomości e-mail w skrzynce odbiorczej to:
Dont Reply

Czy w Django istnieje sposób na dołączenie „nazwy” do konta e-mail używanego do wysyłania e-maili?

Sprawdziłem mail.py Django, ale nie udało mi się znaleźć rozwiązania
http://code.djangoproject.com/browser/django/trunk/django/core/mail.py?rev=5548

Używanie:
Django 1.1
Python 2.6
Ubuntu 9.1
settings.EMAIL_HOST = 'smtp.gmail.com'

Dzięki

Odpowiedzi:


145

Możesz faktycznie użyć "Dont Reply <do_not_reply@domain.com>"jako adresu e-mail, z którego wysyłasz.

Spróbuj tego w powłoce swojego projektu django, aby sprawdzić, czy działa również z gapps:

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

1
Dzięki za wiadomość! Szkoda, że ​​nie widziałem tego wczoraj, b / c zaoszczędziłoby mi to trochę czasu. Właśnie przeczytałem dokumentację pod adresem < docs.djangoproject.com/en/dev/topics/email/… > i w końcu przeczytałem dokładniej „from_email” i znalazłem tę samą odpowiedź co Ty. Właśnie przychodziłem tutaj, żeby opublikować odpowiedź, kiedy zobaczyłem twoją. W każdym razie jeszcze raz dziękuję! Cieszę się, że w końcu to działa
rfadams

10
Możesz również ustawić DEFAULT_FROM_EMAIL na settings.py w ten sposób: DEFAULT_FROM_EMAIL = 'Dont Reply <do_not_reply@domain.com>'
Marc Tudurí Kwietnia

Tylko upewnij się, że nie ustawiłeś tego samego adresu e-mail z nazwą jako auth_user, ponieważ nie powiedzie się podczas uwierzytelniania
iamkhush

@iamkhush - co masz na myśli setting the same email with name as aut_user. Otrzymuję błąd uwierzytelniania. Nie mogłem zrozumieć, dlaczego?
PythonEnthusiast

0

Oprócz metody send_mail do wysyłania wiadomości e-mail, EmailMultiAlternatives może również służyć do wysyłania wiadomości e-mail z zawartością HTML z treścią tekstową jako alternatywą.

spróbuj tego w swoim projekcie

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

Spowoduje to wysłanie wiadomości na adres youremail@example.com z informacją „Nie odpowiadaj”, która zostanie wyświetlona jako nazwa zamiast e-maila „do_not_replay@domain.com”.


-5

Używam tego kodu do wysyłania przez Gmaila smtp (używając Google Apps). i nazwy nadawców są w porządku

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

Jest to właściwie ten sam kod, którego klasy EmailMessage używają w tle. Niezależnie od tego, wypróbowałem twoją metodę i e-mail nadal ma do_not_replynazwę nadawcy. Dzięki za próbę
rfadams

3
a co z settings.DEFAULT_EMAIL_FROM?
jujule
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.