Dar un nombre a la cuenta de correo electrónico al enviar correos electrónicos con Django a través de Google Apps


84

Estoy enviando correos electrónicos a usuarios que usan Django a través de Google Apps.

Cuando el usuario recibe correos electrónicos enviados desde la aplicación Django, son de:
do_not_reply@domain.com

al mirar todos los correos electrónicos en la bandeja de entrada, las personas ven el remitente del correo electrónico como:
do_not_replyo do_not_reply@domain.comsegún el cliente de correo electrónico utilizado

Si inicio sesión en esa cuenta "do_not_reply" utilizando el navegador y Google Apps y luego me envío un correo electrónico, los correos electrónicos son de:
Dont Reply<do_not_reply@domain.com>

Como resultado, el nombre que se muestra para el remitente del correo electrónico en la bandeja de entrada es:
Dont Reply

En Django, ¿hay alguna forma de adjuntar un "nombre" a la cuenta de correo electrónico que se utiliza para enviar correos electrónicos?

He revisado el mail.py de Django, pero no tuve suerte para encontrar una solución
http://code.djangoproject.com/browser/django/trunk/django/core/mail.py?rev=5548

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

Gracias

Respuestas:


142

De hecho, puede utilizar "Dont Reply <do_not_reply@domain.com>"como dirección de correo electrónico desde la que envía.

Pruebe esto en el shell de su proyecto django para probar si también funciona con gapps:

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

1
¡Gracias por publicar! Ojalá hubiera visto esto ayer porque me hubiera ahorrado algo de tiempo. Estaba leyendo la documentación en < docs.djangoproject.com/en/dev/topics/email/… > y finalmente leí el "from_email" más de cerca y encontré la misma respuesta que tú. Venía aquí para publicar una respuesta cuando vi la tuya. De todos modos, gracias de nuevo! Me alegro de que finalmente esto funcione
rfadams

10
También puede configurar DEFAULT_FROM_EMAIL en settings.py así: DEFAULT_FROM_EMAIL = 'Dont Reply <do_not_reply@domain.com>'
Marc Tudurí

Solo asegúrese de no configurar el mismo correo electrónico con el nombre de auth_user, porque fallará durante la autenticación
iamkhush

@iamkhush - ¿Qué quieres decir con setting the same email with name as aut_user. Recibo un error de autenticación. No pude entender por qué
PythonEnthusiast

0

Además del método send_mail para enviar correo electrónico, EmailMultiAlternatives también se puede utilizar para enviar correo electrónico con contenido HTML con contenido de texto como alternativa.

prueba esto en tu proyecto

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

Esto enviará un correo a youremail@example.com con Dont Reply aparecerá como nombre en lugar del correo electrónico 'do_not_replay@domain.com'.


-5

Utilizo este código para enviar a través de gmail smtp (usando aplicaciones de Google). y los nombres de los remitentes están bien

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

Este es en realidad el mismo código que usan las clases EmailMessage de Django en segundo plano. Independientemente, probé su método y el correo electrónico todavía tiene do_not_replyel nombre del remitente. Sin embargo, gracias por intentarlo
rfadams

3
y ¿qué pasa con settings.DEFAULT_EMAIL_FROM?
jujule
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.