Django联系表格:电子邮件未发送

时间:2020-11-01 13:28:01

标签: django

我目前正在Django中为我的网站建立联系表单。 唯一的问题是,提交表单时未发送电子邮件。 这是代码:

settings.py:

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = "c******o@gmail.com"
EMAIL_HOST_PASSWORD = '****'
EMAIL_PORT = '587'

views.py:

sender_name = form.cleaned_data['nome_completo']
            sender_email = form.cleaned_data['email']
            message = "{0} has sent you a new message:\n\n{1}".format(sender_name, form.cleaned_data['messaggio'])

            send_mail('New Enquiry', message, sender_email, ['c******o@gmail.com'])

我的想法: 由于我在virtualenv中,因此当我提交表单时,终端会显示该表单已成功提交,并让我返回正确的代码,也许因此未发送电子邮件,或者可能是因为我使用的是gmail帐户?谢谢!

2 个答案:

答案 0 :(得分:1)

由于您使用的是SMTP服务器,为什么不使用以下后端:

django.core.mail.backends.smtp.EmailBackend

此外,如果您使用的是Gmail,请确保以下几点:

  1. 已在帐户上启用两因素身份验证
  2. 您使用的是app密码。

您可以在Google帐户页面的“安全性”标签上找到这些信息:

https://myaccount.google.com/security

答案 1 :(得分:1)

所以问题出在EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

这会将电子邮件输出到控制台进行调试,而不是实际发送电子邮件。 (请参见https://docs.djangoproject.com/en/3.1/topics/email/#console-backend

请勿将EMAIL_BACKEND设置为任何用于生产的内容,因为它的默认值为django.core.mail.backends.smtp.EmailBackend。然后,您的EMAIL_HOST设置将生效,并且应该发送电子邮件。