【问题标题】:send_email not working in django?send_email 在 Django 中不起作用?
【发布时间】:2015-09-15 13:05:02
【问题描述】:

我写了一个通过 django 发送邮件的应用程序

models.py

from django.db import models

from django import forms

class EmailForm(forms.Form):

      firstname = forms.CharField(max_length=255)

      lastname = forms.CharField(max_length=255)

      email = forms.EmailField()

      subject = forms.CharField(max_length=255)

      botcheck = forms.CharField(max_length=5)

      message = forms.CharField()

views.py

from django.views.generic.base import TemplateView

from django.http import HttpResponseRedirect

from django.core.mail import send_mail, BadHeaderError

from models import EmailForm

from django.shortcuts import render

def sendmail(request):

    if request.method == 'POST':
      form = EmailForm(request.POST)
      if form.is_valid():
        firstname = form.cleaned_data['firstname']
        lastname = form.cleaned_data['lastname']
        email = form.cleaned_data['email']
        subject = form.cleaned_data['subject']
        botcheck = form.cleaned_data['botcheck'].lower()
        message = form.cleaned_data['message']
        if botcheck == 'yes':
         try:
            fullemail = firstname + " " + lastname + " " + "<" + email + ">"
            send_mail(subject, message, email, ['myemail@gmail.com'], fail_silently=False)
            return HttpResponseRedirect('/email/thankyou/')
         except:
            return HttpResponseRedirect('/email/')
        else:
          return HttpResponseRedirect('/email/')
    else:
        return HttpResponseRedirect('/email/') 

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

它显示在控制台中。

但是当

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

它没有将电子邮件发送给指定的用户。 我的 settings.py 文件

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

EMAIL_USE_TLS   = True
EMAIL_HOST      =  'localhost'

EMAIL_PORT      = '8000'

如何发送电子邮件?

【问题讨论】:

  • 谢谢。我会试试的。如果我没有明确说明其他人是如何理解的?
  • 帮我解决一下。
  • @susmitha 如果您根本没有指定 smtp 服务器,那么电子邮件将如何到达收件箱?
  • this

标签: python django


【解决方案1】:

您已将 EMAIL HOST 指定为 localhost,将其更改为可靠的电子邮件主机,例如 gmail。您的 settings.py 可以具有以下给定设置,以使用 gmail smtp 服务器发送电子邮件。您也必须更改端口。

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

如果问题仍然存在,您必须允许 less secure apps 访问您的 gmail 帐户。这是 gmail 最近对其帐户访问策略所做的更改。默认情况下,只有合格的域才能使用 gmail 身份验证 (OAUTH2) 机制发送电子邮件。要允许不太安全的应用访问您的 gmail 帐户,您必须登录 Google 开发者控制台。

【讨论】:

  • SMTPAuthenticationError
  • 转到 gmail.com 并验证您是否可以使用 settings.py 中提供的凭据登录到 gmail。在 SO 中发布时,还应尝试通过错误跟踪以公平的方式解释问题。
  • 我可以登录我的帐户。只有我在那里提到过。
  • 我已经编辑了上面的答案。您可以参考它并为不太安全的应用启用 gmail。
  • 我也尝试过允许在 google 帐户设置中使用不太安全的应用程序。但仍然无法正常工作。谢谢
猜你喜欢
  • 2015-06-13
  • 1970-01-01
  • 2017-04-30
  • 2021-02-01
  • 2012-02-21
  • 2012-04-04
  • 2013-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多