Python Django联系人表单未发送电子邮件

Python Django联系人表单未发送电子邮件,python,django,email,django-forms,contact-form,Python,Django,Email,Django Forms,Contact Form,我在我的about页面上设置了一个简单的联系表单,在填写字段并单击submit之后,我收到一条“Success!”消息,表明电子邮件已发送。然而,电子邮件从未到达我的收件箱 我在这里读了很多关于这个问题的帖子(似乎很常见),但我尝试的一切都不起作用;即使使用django.core.mail.backends.console.EmailBackend也无法在控制台中打印,但提交时仍会收到“Success!”消息 My settings.py: import os BASE_DIR = os.pa

我在我的about页面上设置了一个简单的联系表单,在填写字段并单击submit之后,我收到一条“Success!”消息,表明电子邮件已发送。然而,电子邮件从未到达我的收件箱

我在这里读了很多关于这个问题的帖子(似乎很常见),但我尝试的一切都不起作用;即使使用
django.core.mail.backends.console.EmailBackend
也无法在控制台中打印,但提交时仍会收到“Success!”消息

My settings.py:

import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

SECRET_KEY = os.getenv("SECRET_KEY")

DEBUG = True

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.live.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'xxxx@hotmail.com'
EMAIL_HOST_PASSWORD = os.environ['EMAIL_PASSWORD']
...
My views.py:

...
from django.core.mail import send_mail, BadHeaderError
from django.http import HttpResponse
from django.shortcuts import redirect
from .forms import ContactForm
...
class AboutPage(TemplateView):
    template_name = 'database/templates/about.html'

def about(request):
    if request.method == 'GET':
        form = ContactForm()
    else:
        form = ContactForm(request.POST)
        if form.is_valid():
            subject = form.cleaned_data['subject']
            from_email = form.cleaned_data['from_email']
            message = form.cleaned_data['message']
            try:
                send_mail(subject, message, from_email, ['xxxx@hotmail.com'])
            except BadHeaderError:
                return HttpResponse('Invalid header found.')
            return redirect('success')
    return render(request, 'about.html', {'form': form})

def success(request):
    return render(request, 'success.html')
My URL.py:

from django.urls import path
from . import views

urlpatterns = [
    ...
    path('about/', views.about, name='about'),
    path('success/', views.success, name='success'),
    ...
    ]
My about.html模板:

{% extends "base.html" %}

{% block content %}
...
  <h3>Contact</h3>
  <form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <div class="form-actions">
      <button type="submit">Send</button>
    </div>
  </form>
...
{% endblock %}
{% extends "base.html" %}

{% block content %}
...
  <h1>Success!</h1>
  <p>Thank you for your message!</p>
...
{% endblock %}
{%extends“base.html”%}
{%block content%}
...
接触
{%csrf_令牌%}
{{form.as_p}}
发送
...
{%endblock%}
以及我的success.html模板:

{% extends "base.html" %}

{% block content %}
...
  <h3>Contact</h3>
  <form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <div class="form-actions">
      <button type="submit">Send</button>
    </div>
  </form>
...
{% endblock %}
{% extends "base.html" %}

{% block content %}
...
  <h1>Success!</h1>
  <p>Thank you for your message!</p>
...
{% endblock %}
{%extends“base.html”%}
{%block content%}
...
成功!
谢谢你的留言

... {%endblock%}
我错过了什么?如有任何建议,将不胜感激

编辑

在运行django shell之后,根据@yevhenim的建议,以下是我得到的(太长了,无法在评论中发布):

linux上的[GCC 5.4.0 20160609] 有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。 (InteractiveConsole) >>>从django.core.mail导入发送邮件 >>>发送邮件('主题','消息','example@example.org', ['test@example.org']) 内容类型:文本/纯文本;charset=“utf-8” MIME版本:1.0 内容传输编码:7bit 主题:主题 发件人:example@example.org 致:test@example.org 日期:2019年10月13日星期日23:33:35-0000 消息ID: 消息 ------------------------------------------------------------------------------- 1. >>> 编辑2

[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.core.mail import send_mail
>>> send_mail('subject', 'message', 'example@example.org', ['test@example.org'])
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/meganmccarty/.virtualenvs/django3/lib/python3.7/site-packages/django/core/mail/__init__.py", line 60, in send_mail
    return mail.send()
  File "/home/meganmccarty/.virtualenvs/django3/lib/python3.7/site-packages/django/core/mail/message.py", line 291, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/home/meganmccarty/.virtualenvs/django3/lib/python3.7/site-packages/django/core/mail/backends/smtp.py", line 103, in send_messages
    new_conn_created = self.open()
  File "/home/meganmccarty/.virtualenvs/django3/lib/python3.7/site-packages/django/core/mail/backends/smtp.py", line 70, in open
    self.connection.login(self.username, self.password)
  File "/usr/lib/python3.7/smtplib.py", line 730, in login
    raise last_exception
  File "/usr/lib/python3.7/smtplib.py", line 721, in login
    initial_response_ok=initial_response_ok)
  File "/usr/lib/python3.7/smtplib.py", line 642, in auth
    raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (535, b'5.7.3 Authentication unsuccessful [MN2PR01CA0032.prod.exchangelabs.com]')
>>> 
linux上的[GCC 5.4.0 20160609] 有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。 (InteractiveConsole) >>>从django.core.mail导入发送邮件 >>>发送邮件('主题','消息','example@example.org', ['test@example.org']) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“/home/meganmcarty/.virtualenvs/django3/lib/python3.7/site packages/django/core/mail/_init__.py”,第60行,在发送邮件中 返回邮件。发送() 文件“/home/meganmcarty/.virtualenvs/django3/lib/python3.7/site packages/django/core/mail/message.py”,第291行,在send中 返回self.get\u连接(以静默方式失败)。发送消息([self]) 文件“/home/meganmcarty/.virtualenvs/django3/lib/python3.7/site packages/django/core/mail/backends/smtp.py”,第103行,发送消息 新建连接创建=self.open() 文件“/home/meganmcarty/.virtualenvs/django3/lib/python3.7/site packages/django/core/mail/backends/smtp.py”,第70行,打开 self.connection.login(self.username、self.password) 文件“/usr/lib/python3.7/smtplib.py”,第730行,登录 引发最后一个异常 文件“/usr/lib/python3.7/smtplib.py”,第721行,登录 初始响应(正常=初始响应(正常) 文件“/usr/lib/python3.7/smtplib.py”,第642行,在auth中 引发SMTPAuthenticationError(代码,resp) smtplib.SMTPAuthenticationError:(535,b'5.7.3身份验证未成功[MN2PR01CA0032.prod.exchangelabs.com]) >>> 编辑3
对于任何阅读本文的人来说,pythonanywhere和hotmail(我在这里尝试使用这两个)并不能一起工作。谢谢你解决了这个问题,@yevhenim!在切换到使用gmail帐户后,一切都很顺利

当您尝试使用
django.core.mail.backends.console.EmailBackend
时,电子邮件也不会到达您的控制台?您的
尝试。。。除了
零件不起作用,因为您只检查了
BadHeaderError
。所以你总是能看到成功的页面。尝试将代码更改为
,例外情况除外,如e:print(e)
,并查看输出。@Toankocho是的,当尝试
django.core.mail.backends.console.EmailBackend
时,控制台中不会打印任何内容。我意识到这可能是因为我正在使用PythonAnywhere来编写我的web应用程序,而没有在我的本地计算机上使用该web应用程序machine@megan因为您使用Pythonywhere,并且看不到development server控制台,所以您需要在
settings.py
中设置
LOGGING
,以将日志存储在某个文件中,以便以后阅读(有关详细信息,请参阅)。或者您可以为此目的进行设置。@Toankocho:谢谢您的回复!虽然我已经了解了gmail的所有功能,但我感谢您抽出时间对我的问题进行评论。我一定会考虑设置日志记录程序