如何在 Django 邮件中指定名称?

Posted

技术标签:

【中文标题】如何在 Django 邮件中指定名称?【英文标题】:How to specify name in Django mail? 【发布时间】:2012-04-12 06:47:52 【问题描述】:

我将 django 的 core.mail 包与 django-registration 一起用于新用户注册工作流程。我通过我公司的谷歌邮件服务有一个电子邮件帐户“no-reply@(mycompany).com”,我想用它来发送这些电子邮件。在 google 邮件帐户设置中,我将电子邮件帐户的名称设置为“(MyCompany) Support”,这样如果我直接从 google 邮件发送邮件,则来自该帐户的电子邮件将来自“(MyCompany) Support”。但是,当我使用 django 的电子邮件设置发送邮件时,电子邮件在客户的邮箱中显示为来自“无回复”,这很丑陋,可能会让新客户有点反感。有没有办法在使用 django 的内置邮件发送时为电子邮件地址指定一个“名称”,以便在他们收到电子邮件时看到显示的“名称”?

这是我在 settings.py 中的当前设置:

EMAIL_HOST='smtp.gmail.com'
EMAIL_PORT=587
EMAIL_HOST_USER='no-reply@mycompany.com'
EMAIL_HOST_PASSWORD='**********'
EMAIL_USE_TLS = True

【问题讨论】:

请看这个:***.com/questions/2111452/… 【参考方案1】:

你可以使用

"(MyCompany) Support <no-reply@mycompany.com>"

作为调用 send_mail 的发件人地址。

【讨论】:

【参考方案2】:

您可以在setting.py 中使用ADMINSMANAGERS 元组。例如:

ADMINS = (('Your Name', 'email@company.com),)

然后:

django.core.email.mail_managers('subject', 'body')

【讨论】:

【参考方案3】:

如果您直接使用 django 的电子邮件包,这些解决方案很有用。但是,我不想寻找一个钩子来覆盖 django-registration 使用 send_mail 的方式,所以我在浏览 django 文件时找到了以下设置,它可以让你从电子邮件中设置默认值。

 DEFAULT_FROM_EMAIL='(My Company) Support <no-reply@mycompany.com>' 

它成功了!

认为其他人可能会觉得它很有用,尽管我并没有自命不凡地将自己的答案标记为正确。

【讨论】:

看起来你也可以为SERVER_EMAIL 输入相同的值!【参考方案4】:

DEFAULT_FROM_EMAIL='(我的公司)支持'

帮助我解决了这个问题。

【讨论】:

以上是关于如何在 Django 邮件中指定名称?的主要内容,如果未能解决你的问题,请参考以下文章

在 settings.py 中指定 Django 测试数据库名称

如何在 django 中指定索引类型? (btree 与哈希等)

如何在 django 中指定 login_required 重定向 url?

如何在 Django 的设置文件中指定多个“init_command”

如何在 ExternalReportWSSService 中指定附件名称:deliveryService webservice

如何在 Django REST framework JWT 中指定我自己的数据值?