所以,我正在尝试创建一个带有电子邮件确认的用户注册项目
用户需要先确认其电子邮件,然后才能登录
在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')
什么也没解决。
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'