Присвоение имени учетной записи электронной почты при отправке писем с помощью 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'

благодаря

rfadams
источник

Ответы:

145

Фактически вы можете использовать его "Dont Reply <do_not_reply@domain.com>"в качестве адреса электронной почты, с которого отправляете сообщения.

Попробуйте это в оболочке вашего проекта django, чтобы проверить, работает ли он также с gapps:

>>> 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» и нашел тот же ответ, что и вы. Просто зашел сюда, чтобы отправить ответ, когда увидел твой. В любом случае, еще раз спасибо! Рад, что наконец это
заработало
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 будет отправлено письмо с надписью Dont Reply, которое будет отображаться как имя вместо адреса электронной почты 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()
джуджуле
источник
Фактически это тот же код, который классы EmailMessage Django используют в фоновом режиме. Тем не менее, я попробовал ваш метод, и в электронном письме по-прежнему do_not_replyуказано имя отправителя. Спасибо за попытку
rfadams
3
а что с settings.DEFAULT_EMAIL_FROM?
jujule