如何使用 google smtp 服务器从 django 发送电子邮件?

Posted

技术标签:

【中文标题】如何使用 google smtp 服务器从 django 发送电子邮件?【英文标题】:How can I send e-mail from django using the google smtp server? 【发布时间】:2013-04-05 19:08:02 【问题描述】:

我在看https://docs.djangoproject.com/en/dev/topics/email/

我的问题是,有没有办法我可以在没有身份验证的情况下使用 smtp.google.com,或者不必将我的身份验证信息放入 settings.py 或作为 django.core.mail.send_mail 函数中的参数?

此时我正在寻找在 django 上使用 smtp.google.com 的最佳实践,我知道有更好的解决方案,例如 http://sendgrid.com/

【问题讨论】:

【参考方案1】:

尝试在settings.py 中包含此内容:

# Email configuration.

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'user@domain.com'
EMAIL_HOST_PASSWORD = 'yourpassword'
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = 'user@domain.com'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

如果您有网络域提供商(例如 namecheap、godady 等),您可以将您的域 (mycompany.com) 与 Gmail 相关联。对于该功能,请向您的域名提供商寻求帮助或在 Internet 中查找信息:

http://www.namecheap.com/support/knowledgebase/article.aspx/1244/78/ http://help.squarespace.com/customer/portal/articles/581494-how-do-i-set-up-google-apps-for-my-domain-

希望对你有帮助, 干杯。

【讨论】:

【参考方案2】:

如果不提供您的 auth_information(即您的 gmail 密码),您将无法使用 smpt.gmail.com

但是,您可以将您的身份验证信息放在local_settings.py 中,并且不要将此 local_settings 添加到版本控制中,这样除了您之外没有人会看到此文件。将此 local_settings 包含在您的 settings.py 中。

settings.py

 ...
 EMAIL_HOST = 'smtp.gmail.com'
 EMAIL_PORT = 587
 EMAIL_USE_TLS = True
 ...
 ...
 from local_settings import *

local_settings.py

EMAIL_HOST_USER = 'user@gmail.com'
EMAIL_HOST_PASSWORD = 'yourpassword'

【讨论】:

以上是关于如何使用 google smtp 服务器从 django 发送电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章

如何知道我的 ISP 的 smtp 服务器名称?

在Google Cloud Service中发送电子邮件

从PHP页面使用GMail SMTP服务器发送电子邮件

无法使用smtp.gmail.com从一个特定的Google帐户发送邮件

SSMTP—让Linux系统从Office 365发送邮件

电子邮件如何从 SMTP 传输到 IMAP?