You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 08:34:36