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

在我的 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

https://stackoverflow.com/questions/6367014/

相关文章:

python - 如何在 Python 中进行 scp?

python - os.path.dirname(__file__) 返回空

python - 在几个文件中拆分views.py

linux - Unix:如何删除文件中列出的文件

c - dup2/dup - 为什么我需要复制文件描述符?

python - Python中有标签/转到吗?

python - 如何为子图设置 xlim 和 ylim

python - 如何在 Python 中获取线程 id?

linux - 在 Bash 脚本中引发错误

linux - 如何让 sed 从标准输入中读取?