Django send_mail不发送电子邮件,未给出错误

时间:2018-10-31 13:02:31

标签: django django-rest-framework smtp

我正在使用Django 2.0.7,如文档所述使用send_mail。使用下面的视图,我没有收到邮件,但也没有错误。

事实证明,用于发送邮件的设置可以正常工作,因为我确实收到了django-rest-auth身份验证库发送的电子邮件。

考虑到我认为send_mail代码中没有错误,我想知道是否有人可以帮助我找出问题所在。

发送邮件的视图:

@api_view(['POST'])
def contact(request):
    print("contact view")
    form = ContactForm(request.POST)
    if form.is_valid():
        print("form is valid")
        print(f"form.cleaned_data:\n{form.cleaned_data}")
        message = create_message(form.cleaned_data)
        send_mail(
            "Test email",
            message,
            'from@example.com',
            ['my@email.com'],
            fail_silently=False,
        )
        data = {}
        status = rest_status.HTTP_200_OK
    else:
        print("form NOT valid")
        print(f"form.errors:\n{form.errors}")
        data = form.errors
        status = rest_status.HTTP_400_BAD_REQUEST
    return Response(data, status=status)

由于打印,我知道调用了正确的视图,正确接收了POST数据,并且接收到的数据有效。

由于我不想发送垃圾邮件,因此我在此代码中使用的电子邮件地址与现实中使用的电子邮件地址不同。但是我确定我使用了正确的收件人电子邮件地址。

我还测试了是否替换以下行:

message = create_message(form.cleaned_data)

下面的行会更改任何内容,但不会更改。

message = "Test message"

电子邮件设置: (在此处删除了实际的主机地址)

EMAIL_USE_TLS = True
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'xxxx'
EMAIL_HOST_PASSWORD = os.environ['EMAIL_PASSWORD']
EMAIL_HOST_USER = os.environ['EMAIL_USER']
EMAIL_PORT = 587
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER

0 个答案:

没有答案