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:
[email protected]

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 [email protected]segú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<[email protected]>

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

rfadams
fuente

Respuestas:

142

De hecho, puede utilizar "Dont Reply <[email protected]>"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 <[email protected]>', ['[email protected]'])
Gregor Müllegger
fuente
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 <[email protected]>'
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 <[email protected]>', ['[email protected]'])

email.attach_alternative(html_content, 'text/html')
email.send()

Esto enviará un correo a [email protected] con Dont Reply aparecerá como nombre en lugar del correo electrónico '[email protected]'.

Basant Kumar
fuente
-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()
jujule
fuente
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