Надання імені електронної пошти під час надсилання електронних листів за допомогою Django через Google Apps


84

Я надсилаю електронні листи користувачам, які використовують Django, через Google Apps.

Коли користувач отримує електронні листи, надіслані з програми Django, вони надходять із:
do_not_reply@domain.com

переглядаючи всі електронні листи у вхідних, люди бачать відправника електронної пошти як:
do_not_replyабо do_not_reply@domain.comзалежно від використовуваного поштового клієнта

Якщо я ввійду до цього облікового запису "do_not_reply" за допомогою браузера та самого Google Apps, а потім відправлю електронний лист собі, електронні листи надходять з:
Dont Reply<do_not_reply@domain.com>

Як результат, ім’я, яке відображається у відправника електронної пошти у вхідних:
Dont Reply

Чи існує в Django спосіб прикріпити "ім'я" до облікового запису електронної пошти, який використовується для надсилання електронних листів?

Я переглянув mail.py Django, але не пощастило знайти рішення
http://code.djangoproject.com/browser/django/trunk/django/core/mail.py?rev=5548

Використання: Налаштування
Django 1.1
Python 2.6
Ubuntu 9.1.EMAIL_HOST
= 'smtp.gmail.com'

Дякую

Відповіді:


142

Ви можете фактично використовувати "Dont Reply <do_not_reply@domain.com>"адресу електронної пошти, з якої надсилаєте повідомлення.

Спробуйте це в оболонці вашого проекту django, щоб перевірити, чи працює він також з прогалинами:

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

1
Дякуємо за публікацію! Якби я бачив це вчора, б / к, це заощадило б мені трохи часу. Я просто читав документацію на < docs.djangoproject.com/en/dev/topics/email/… > і, нарешті, уважніше прочитав "from_email" і знайшов таку ж відповідь, як і ви. Я просто приїжджав сюди, щоб опублікувати відповідь, коли я побачив вашу. У будь-якому разі, ще раз спасибі! Радий, що нарешті це працює
rfadams

10
Ви також можете встановити DEFAULT_FROM_EMAIL на settings.py так: DEFAULT_FROM_EMAIL = 'Dont Reply <do_not_reply@domain.com>'
Марк Тудурі,

Тільки переконайтеся, що ви не встановлюєте той самий електронний лист з іменем як auth_user, оскільки він не вдасться під час автентифікації
iamkhush

@iamkhush - Що ви маєте на увазі під setting the same email with name as aut_user. Я отримую помилку автентифікації. Я не міг зрозуміти, чому?
PythonEnthusiast

0

Окрім методу send_mail для надсилання електронної пошти, EmailMultiAlternatives також може використовуватися для надсилання електронних листів із вмістом HTML із текстовим вмістом як альтернатива.

спробуйте це у своєму проекті

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

Буде надіслано електронне повідомлення на адресу youremail@example.com із повідомленням „Не відповідати” буде надруковано як ім’я, а не електронне повідомлення „do_not_replay@domain.com”.


-5

Я використовую цей код для надсилання через gmail smtp (за допомогою програм Google). і імена відправників у порядку

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

Це насправді той самий код, який класи Django EmailMessage використовують у фоновому режимі. Незалежно від того, я спробував ваш метод, і електронне повідомлення все ще має do_not_replyім’я відправника. Дякую за спробу
rfadams

3
а як щодо налаштувань.DEFAULT_EMAIL_FROM?
липень
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.