如何使用 Django 表单在表单提交时发送电子邮件?

How to send email on form submission using django forms?

在实际网站上发送邮件之前,我 运行 一个小型测试 Django 本地 SMTP 服务器: 我必须在 settings.py 中配置这些设置。但是我应该把它放在哪里呢?

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_PORT = '1025'
EMAIL_USE_TLS = True

那我该怎么办?请帮忙。

您需要将这些放入您的 settings.py 文件中。您可以将以下设置放在 settings.py 文件中的任何位置。

settings.py

...

EMAIL_HOST = 'smtp.gmail.com'  # since you are using a gmail account
EMAIL_PORT = 587  # Gmail SMTP port for TLS
EMAIL_USE_TLS = True    
...

local_settings.py

EMAIL_HOST_USER = 'your_username@gmail.com'
EMAIL_HOST_PASSWORD = 'your_gmail_password'

然后要发送邮件,可以使用Django的send_email()

from django.core.mail import send_mail

send_mail('My Subject', 'My message', 'from@example.com',
    ['to@example.com'], fail_silently=False)

然后使用 settings.py 文件中 EMAIL_HOSTEMAIL_PORT 设置中指定的 SMTP 主机和端口发送邮件。 EMAIL_HOST_USEREMAIL_HOST_PASSWORD 设置(如果设置)用于对 SMTP 服务器进行身份验证,EMAIL_USE_TLS 设置控制是否使用安全连接。

send_email() 的签名:

send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None, connection=None, html_message=None)

注意:您可以将您的gmail帐户信息放在local_settings.py中,并将此local_settings添加到git-忽略。然后将此 local_settings 包含在您的 settings.py 中。这样只有您才能看到您的 local_settings.