Django注册API发送验证邮件报错:找不到django.core.email模块
问题排查与解决
错误根源
报错ModuleNotFoundError: No module named 'django.core.email'的核心原因是邮件模块导入路径错误——Django官方提供的发送邮件模块是django.core.mail,而非django.core.email。
代码修复步骤
1. 修正模块导入
在序列化器文件顶部补充正确的导入语句:
from django.core.mail import send_mail from django.conf import settings
2. 修复sendmail函数的变量错误
你的sendmail函数里误用了未定义的user.email,应该直接使用传入的email参数:
def sendmail(email): subject = 'you should verify your account' message = f'please verify your account with this link.' email_from = settings.EMAIL_HOST_USER recipient_list = [email, ] # 替换为传入的email参数 send_mail(subject, message, email_from, recipient_list)
3. 验证自定义用户模型方法
确认你的自定义user模型的create_user方法能正确接收并处理username、email、fullname、password、userid这些字段,避免因字段不匹配引发其他隐性错误。
额外配置检查
确保settings.py中已正确配置SMTP参数(以常见的邮箱服务商为例):
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.example.com' # 替换为你的SMTP服务器地址 EMAIL_PORT = 587 EMAIL_USE_TLS = True EMAIL_HOST_USER = 'your-email@example.com' EMAIL_HOST_PASSWORD = 'your-email-auth-code' # 注意是授权码而非登录密码
内容的提问来源于stack exchange,提问作者Pouyan jh
相关产品推荐
相关产品推荐

