为什么所有步骤都完成了,邮件仍然没有发送?

0 投票
1 回答
24 浏览
提问于 2025-04-14 16:33

我想在每次用户注册我的服务时发送一封确认邮件。我按照教程操作,但在用户注册的时候,邮件却没有发送。

这是我的 views.py 文件

def signup_view(request):
    if request.method == "POST":

        first_name= request.POST.get('first_name')
        last_name = request.POST.get('last_name')
        email = request.POST.get('email', 'default user')
        phone = request.POST.get('phone')
        password1= request.POST.get('password1')
        password2= request.POST.get('password2')
        userHash= email.replace('@','')
       # userHash =~ s/'@'//g

        #new =User.objects.filter(username = userHash)

        if password1 != password2:
            return render(request, 'signup.html',{'error_message': ' Passwords Different'})
        else:
            user = User.objects.create_user((userHash, password1))
            user.save()
            login(request, user)
            current_site = get_current_site(request)
            user = request.user
            email = request.user.email
            subject = "Verify Email"
            message = render_to_string('account/verify_email_message.html', {
                'user': user,
                'domain': current_site.domain,
                'uid':urlsafe_base64_encode(force_bytes(user.pk)),
                'token':account_activation_token.make_token(user),
            })
            email = EmailMessage(
                subject, message, to=[email]
            )
            email.send()
            return HttpResponse("Please Confirm your email address to complete the registration") and  render(request,'account/landing.html')
    else:
        form = CreateUserForm()
        context = {
        'form': form
        }
        return render(request, 'account/signup.html', context)
def activate(request, uidb64, token):
    try:
        uid = force_str(urlsafe_base64_decode(uidb64))
        user = User.objects.get(pk=uid)
    except(TypeError, ValueError, OverflowError, User.DoesNotExist):
        user = None
    if user is not None and account_activation_token.check_token(user, token):
        user.is_active = True
        user.save()
        return HttpResponse("Thank you for this confirmation") and redirect('account/index.html')   
    else:
        messages.warning(request, 'The link is invalid.')
    return render(request, 'account/index.html')


def home(request):
    return render(request, 'account/index.html')

这是我的 settings.py 文件

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = "smtp.gmail.com"
EMAIL_PORT = 587
EMAIL_USE_TLS = True

EMAIL_HOST_USER = "myjarwiz2024@gmail.com" # - GMAIL email address
EMAIL_HOST_PASSWORD = 'redacted' # - APP password

DEFAULT_FROM_EMAIL = 'Jarwiz myjarwiz2024@gmail.com' # - GMAIL email address

虽然所有的重定向都在进行,但邮件就是没有发送。

我尝试过用其他教程的方法,修改了视图,并按照 Stack Overflow 的说明来解决错误,但我还是没能做到。

1 个回答

0

我发现我之前做错了什么。

user = request.user
email = request.user.email

我把上面那两行代码删掉了,结果邮件就发出去了。

撰写回答