一尘不染

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

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()取而代之的是?

阅读 507

收藏
2020-03-26

共2个答案

一尘不染

将电子邮件发送到真实的SMTP服务器。如果你不想建立自己的公司,则可以找到可以为你经营公司的公司,例如Google自己。

2020-03-26
一尘不染

我将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

2020-03-26