Django: Ошибка при отправке электронной почты: (530, b'5.7.0 Требуется аутентификация

Я работаю над проектом Django и столкнулся с проблемой отправки электронной почты. Вот мой код в views.py

class ForgotPasswordView(APIView):
    def get(self, request):
        return render(request, 'login/forgot_password.html')
    def post(self, request):
        email = request.data.get('email')
        if not email:
            return Response({"message": "",
                             "error": " Email required."
                             },
                             status=status.HTTP_400_BAD_REQUEST)
        try:
            user = User.objects.get(email=email)
        except User.DoesNotExist:
            return Response({"message": "",
                            "error": "Email not found."
                            },
                            status=status.HTTP_400_BAD_REQUEST)
        
        #Tao token 
        token = default_token_generator.make_token(user)
        
        #Tao link reset_password
        uid = urlsafe_base64_encode(force_bytes(user.pk))
        reset_url = request.build_absolute_uri(
            reverse('reset_password', kwargs={'uidb64': uid, 'token': token})
        )

        #Gui email
        send_mail(
            'Reset Password',
            f'Click following link to reset your password: {reset_url}',
            os.environ.get('EMAIL_HOST_USER'), 
            [email],   #Email nhận
            fail_silently=False
        )   

        return Response({"message": "Mail đặt lại mật khẩu đã được gửi",
                         "error": ""
                         },
                         status=status.HTTP_200_OK)

Но проблема здесь

smtplib.SMTPSenderRefused: (530, b'5.7.0 Authentication Required. For more information, go to\n5.7.0  https://support.google.com/mail/?p=WantAuthError d9443c01a7336-1fed7fbf285sm27418485ad.267 - gsmtp', 'sender@gmail.com')

Я думаю, что в настройках моей электронной почты есть некоторые проблемы, поэтому у меня есть тест в tests.py и я работаю абсолютно нормально.

from dotenv import load_dotenv
load_dotenv()
from django.conf import settings
from django.core.mail import send_mail
import os
import sys
import django
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(project_root)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "system.settings")
django.setup()

try:
    send_mail(
        'Test Subject',
        'Test message body',
        os.environ.get('EMAIL_HOST_USER'),
        ['reciever@outlook.com'],
        fail_silently=False,
    )
    print("Test email sent successfully")
except Exception as e:
    print(f"Error sending email: {str(e)}")

Я использую Gmail с паролем App. Он хорошо работает в файле tests.py, так что я понятия не имею, что я сделал не так. Сначала я подумал, что забыл load_dotenv(), но когда я добавил его, проблема осталась прежней. Может ли кто-нибудь помочь мне. Спасибо.

Вернуться на верх