Django配置mail.ru SMTP服务器无法发送邮件问题求助
Django配置mail.ru SMTP服务器无法发送邮件问题求助
大家好,我现在碰到了一个Django发送邮件的棘手问题。我反复检查了自己的配置文件、视图和模型代码,感觉逻辑都是对的,但邮件就是发不出去。奇怪的是,我在控制台测试发送邮件是正常的,这就让我有点摸不着头脑了。
我的环境信息:
- Django版本:4.2.1
- Python版本:3.10
以下是我的相关代码:
settings.py 配置
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" EMAIL_HOST = 'smtp.mail.ru' EMAIL_PORT = 465 EMAIL_HOST_USER = 'storedjango@mail.ru' EMAIL_HOST_PASSWORD = '*****' EMAIL_USE_SSL = True
models.py 代码
class EmailVerification(models.Model): code = models.UUIDField(unique=True) user = models.ForeignKey(to=User, on_delete=models.CASCADE) created = models.DateTimeField(auto_now_add=True) expiration = models.DateTimeField() def __str__(self): return f'Email verification for user {self.user.email}' def send_verification_email(self): link = reverse('users:email_verification', kwargs={'email': self.user.email, 'code': self.code}) verification_link = f'{settings.DOMAIN_NAME}{link}' subject = f'Verification for {self.user.username}' message = f'Click to the link to verify your account {self.user.email} {verification_link} ' send_mail( subject=subject, message=message, from_email=settings.EMAIL_HOST_USER, recipient_list=[self.user.email], fail_silently=False ) def is_expired(self): return True if now() >= self.expiration else False
views.py 代码
class EmailVerificationView(TemplateView): template_name = 'users/email_verification.html' def get(self, request, *args, **kwargs): code = kwargs['code'] user = User.objects.get(email=kwargs['email']) email_verifications = EmailVerification.objects.filter(user=user, code=code) if email_verifications.exists() and not email_verifications.first().is_expired(): user.is_verified_email = True user.save() return super(EmailVerificationView, self).get(request, *args, **kwargs) else: return HttpResponseRedirect(reverse('index'))
forms.py 代码片段
def save(self, commit=True): user = super(UserRegistrationForm, self).save(commit=True) expiration = now() + timedelta(hours=48) record = EmailVerification.objects.create(code=uuid.uuid4(), user=user, expiration=expiration)
有没有大佬能帮我分析下问题的核心原因?或者给我一些可行的解决思路?非常感谢!
备注:内容来源于stack exchange,提问作者Rafig Mammadov
相关产品推荐
相关产品推荐

