python - 如何通过 Django 发送电子邮件?

标签 python django smtp django-settings django-email

在我的 settings.py 中,我有以下内容:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

# Host for sending e-mail.
EMAIL_HOST = 'localhost'

# Port for sending e-mail.
EMAIL_PORT = 1025

# Optional SMTP authentication information for EMAIL_HOST.
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_USE_TLS = False

我的电子邮件代码:

from django.core.mail import EmailMessage
email = EmailMessage('Hello', 'World', to=['user@gmail.com'])
email.send()

当然,如果我通过 python -m smtpd -n -c DebuggingServer localhost:1025 设置调试服务器,我可以在终端中看到电子邮件。

但是,我实际上如何不将电子邮件发送到调试服务器,而是发送到 user@gmail.com?

看完你的回答,让我直说:

  1. 不能用localhost(简单的ubuntu pc)发邮件吗?

  2. 我认为在 django 1.3 中 send_mail() 有点被弃用,而使用 EmailMessage.send() 代替?

最佳答案

我使用 Gmail 作为 Django 的 SMTP 服务器。比处理 postfix 或任何其他服务器要容易得多。我不从事管理电子邮件服务器的业务。

在settings.py中:

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'me@gmail.com'
EMAIL_HOST_PASSWORD = 'password'

注意:在 2016 年,Gmail 默认不再允许这样做。您可以使用像 Sendgrid 这样的外部服务,也可以按照 Google 的本教程来降低安全性,但允许使用此选项:https://support.google.com/accounts/answer/6010255

关于python - 如何通过 Django 发送电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6367014/

相关文章:

python - 在 python 中查找 'large' 列表的 min()/max()。值错误 : min() arg is an empty sequence

python - 在 Django Crispy Forms 中使用 StrictButton

python - Django-registration:如何允许用户删除他们的帐户?

c# - 使用 C# 查找 MX 记录?

python - WCF 和 Python

python - 如何用匹配的名称替换列

python - Py2Exe 的单个可执行文件

python - 两个日期之间的 Django ORM 交集

c# - SmtpClient.Send 正在工作,但 SmtpClient.SendMailAsync 无法在 smtp.office365.com 上工作

ruby-on-rails - rails smtp 问题