Giving email account a name when sending emails with Django through Google Apps

DjangoEmailSmtp

Django Problem Overview


I am sending emails to users using Django through Google Apps.

When the user receives emails sent from the Django app, they are from:
[email protected]

when looking at all emails in the inbox, people see the email's sender as :
do_not_reply or [email protected] depending on the email client used

If I log into that "do_not_reply" account using the browser and Google Apps itself and then send an email to myself, the emails are from:
Dont Reply<[email protected]>

As a result, the name displayed for the email's sender in the inbox is:
Dont Reply

In Django, is there a way to attach a "name" to the email account being used to send emails?

I have reviewed Django's mail.py, but had no luck finding a solution
<http://code.djangoproject.com/browser/django/trunk/django/core/mail.py?rev=5548>

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

Thanks

Django Solutions


Solution 1 - Django

You can actually use "Dont Reply <[email protected]>" as the email address you send from.

Try this in the shell of your django project to test if it also works with gapps:

>>> from django.core.mail import send_mail
>>> send_mail('subject', 'message', 'Dont Reply <[email protected]>', ['[email protected]'])

Solution 2 - Django

Apart from the send_mail method to send email, EmailMultiAlternatives can also be used to send email with HTML content with text content as an alternative.

try this in your project

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

This will send mail to [email protected] with Dont Reply wil be dispalyed as name instead of email '[email protected]'.

Solution 3 - Django

I use this code to send through gmail smtp (using google apps). and sender names are OK

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionrfadamsView Question on Stackoverflow
Solution 1 - DjangoGregor MülleggerView Answer on Stackoverflow
Solution 2 - DjangoBasant KumarView Answer on Stackoverflow
Solution 3 - DjangojujuleView Answer on Stackoverflow