2010-01-21 118 views
56

我正在通过Google Apps向使用Django的用户发送电子邮件。通过Google Apps通过Django发送电子邮件时为电子邮件帐户提供名称

当用户接收到来自Django应用程序发送的电子邮件,他们是来自:
[email protected]

寻找在收件箱中的所有电子邮件的时候,人们看到的电子邮件的发件人为:
do_not_reply[email protected]取决于电子邮件客户端使用

如果我登录到该“do_not_reply”帐户使用的浏览器和谷歌企业应用套件本身,然后发送电子邮件给自己的电子邮件是来自:
Dont Reply<[email protected]>

其结果是,在收件箱中显示电子邮件的发送者的名字是:
Dont Reply

在Django中,有没有附加一个“名”的电子邮件帐户的方式被用来发送电子邮件?

我已阅读Django的mail.py,但没有运气找到一个解决方案
http://code.djangoproject.com/browser/django/trunk/django/core/mail.py?rev=5548

使用:
的Django 1.1
的Python 2.6
Ubuntu的9.1
settings.EMAIL_HOST =“smtp.gmail .com'

谢谢

回答

99

您可以实际使用"Dont Reply <[email protected]>"当你从发送的电子邮件地址。

在Django项目的外壳试试这个测试,如果它也与GAPPS工作:

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

感谢发布!希望我昨天看到过这个b/c,它会为我节省一些时间。我刚刚阅读上的文档,最后仔细阅读“from_email”,并找到与您相同的答案。当我看到你的时候就来这里发表一个答案。无论如何,再次感谢!很高兴终于有这个工作 – rfadams 2010-01-22 20:48:48

+3

您也可以在settings.py上设置DEFAULT_FROM_EMAIL,如下所示: 'DEFAULT_FROM_EMAIL ='Dont Reply <[email protected]>' – 2015-04-16 13:18:42

+0

只需确保,您不要将名称设置为相同的电子邮件auth_user,因为它在验证时会失败 – iamkhush 2017-10-01 09:46:04

-3

我使用此代码发送通过Gmail的SMTP(使用谷歌应用程序)。和发件人的名字都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() 
+0

这实际上是Django的EmailMessage类在后台使用的代码。无论如何,我尝试了您的方法,并且电子邮件仍将'do_not_reply'作为发件人的姓名。感谢您尝试 – rfadams 2010-01-21 18:49:22

+1

以及settings.DEFAULT_EMAIL_FROM? – jujule 2010-01-22 10:53:22

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 <[email protected]>', ['[email protected]']) 

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

这将邮件发送到[email protected]与不要回复时便会dispalyed的名称,而不是电子邮件“[email protected]”。