Django 项目未发送确认电子邮件

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

所以,我正在尝试创建一个带有电子邮件确认的用户注册项目

用户需要先确认其电子邮件,然后才能登录

在settings.py中我有:

DEBUG = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'my email here'
EMAIL_HOST_PASSWORD = 'my pw here'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

在views.py中

def createuser(request):
    form = MyUserCreationForm()

    if request.method == 'POST':
        form = MyUserCreationForm(request.POST)
        if form.is_valid():     
            code = User.objects.make_random_password(length=6,allowed_chars='1234567890')

            user = form.save(commit=False)
            user.is_active = False 
            user.save()
            # if User.is_email_confirmed == False:

            user.code = code
            user.save()
            
            subject = 'Confirm your email' 
            confirmation_code = code
            message = f'Confirm your email with this code: {confirmation_code}'
            from_email = '...'
            to_email = request.user.email
            email = EmailMessage(subject, message, to=[to_email])
            email.send()

            # else:
            #     user = form.save(commit=False)
            #     user.username = user.username.lower()
            #     user.save()
            #     login(request,user)
            #     return redirect('home')
        else:
            messages.error(request,'An error occured during your registration')
    context = {'form':form}
    return render(request, 'signup.html', context)

用户正在保存,但任何电子邮件中绝对没有发送任何内容

然后我尝试了


email = EmailMessage(subject, message, to=[to_email])
email.send()

而不是


send_mail(subject,message,from_email,[to_email])
            return redirect('emailconfirm.html')

什么也没解决。

django-views sendmail
1个回答
0
投票

views.py

from django.core.mail import EmailMessage


def abc(request):
    message = request.POST.get('message')
    email =  request.POST.get('email')
     
    email = EmailMessage(body= message, to=[email])
    email.send()


   

设置.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'  # Or your preferred backend
EMAIL_HOST = 'smtp.gmail.com'  # Example for Gmail
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'sahsdadasdsadgmail.com'
EMAIL_HOST_PASSWORD = ddco usds apffd fvsx'
DEFAULT_FROM_EMAIL = 'sahsdadasdsadgmail.com' 
© www.soinside.com 2019 - 2024. All rights reserved.