Django Rest api 发送电子邮件返回值 true 但电子邮件未发送

问题描述 投票:0回答:1

我正在尝试发送令牌以在我的 django 应用程序上重置密码,该帖子返回确认电子邮件已发送,但尚未发送电子邮件。这是我的设置和配置

设置:

EMAIL_BACKEND ='django.core.mail.backends.smtp.EmailBackend'
EMAIL_PORT = os.getenv('EMAIL_PORT')
EMAIL_USE_TLS = os.getenv('EMAIL_USE_TLS')
EMAIL_HOST = os.getenv('EMAIL_HOST')
EMAIL_HOST_USER = os.getenv('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = os.getenv('EMAIL_HOST_PASSWORD')
DEFAULT_FROM_EMAIL = os.getenv('DEFAULT_FROM_EMAIL')

.env :

  EMAIL_BACKEND="django.core.mail.backends.smtp.EmailBackend"
    EMAIL_PORT=465
    EMAIL_USE_TLS = True
    EMAIL_HOST="ssl0.ovh.net"
    EMAIL_HOST_USER=""
    EMAIL_HOST_PASSWORD=""
    DEFAULT_FROM_EMAIL=EMAIL_HOST_USER

signals.py:

from django.core.mail import EmailMultiAlternatives, send_mail
from django.dispatch import receiver
from django.template.loader import render_to_string
from django.urls import reverse
from ndgd.settings import EMAIL_HOST_USER
from django_rest_passwordreset.signals import reset_password_token_created
from rest_framework.decorators import api_view, permission_classes

@receiver(reset_password_token_created)
def password_reset_token_created(sender, instance, reset_password_token, *args, **kwargs):
    
    context = {
        'current_user': reset_password_token.user,
        'username': reset_password_token.user.username,
        'email': reset_password_token.user.email,
        'reset_password_url':"{}?token={}".format(
            instance.request.build_absolute_uri(reverse('password_reset:reset-password-confirm')),
            reset_password_token.key)
    }

    # Email
    email_html_message = render_to_string('templates/email/password_reset.email.html', context)
    email_plaintext_message = render_to_string('templates/email/password_reset_email.txt', context)

    ms = EmailMultiAlternatives(
        "Password Reset".format(title = "Nouvelles Donnes"),
        email_plaintext_message,
        EMAIL_HOST_USER,
        [reset_password_token.user.email]
    )

    print(EMAIL_HOST_USER)
    print(reset_password_token.user.email)
    ms.attach_alternative(email_html_message, "text/html")
    ms.send

这是邮递员返回值,但从未收到电子邮件,我需要帮助。 谢谢。

python-3.x django-rest-framework smtp ovh
1个回答
0
投票

这里没有调用电子邮件发送的

.send()
函数,它只需要使用括号调用
.send
函数的对象

ms.attach_alternative(email_html_message, "text/html")
ms.send()   # need to call 
© www.soinside.com 2019 - 2024. All rights reserved.