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

Django中实现向当前登录用户发送邮件的问题求助

解决Django send_mail参数错误及SMTP配置问题

先搞定你遇到的send_mail参数错误问题

Django的send_mail()函数有明确的参数顺序要求,前三个必填参数依次是subject(邮件主题)、message(邮件内容)、from_email(发件人邮箱),之后才是recipient_list(收件人列表)。你的两次错误都源于参数传递不符合这个规则:

第一次错误的原因

你最初的代码把recipient_list放在了第三个参数的位置,但这个位置本该是发件人邮箱,所以Django误以为你没传真正的收件人参数,才抛出missing 1 required positional argument: 'recipient_list'的错误。

第二次错误的修正

你现在的代码补上了recipient_list的关键字参数,但还是漏掉了必填的from_email。另外注意你代码里subject和message末尾的逗号——这会让它们变成元组类型而不是字符串,也可能引发潜在问题,记得删掉这些逗号。

修正后的代码示例:

from django.core.mail import send_mail
from django.contrib.auth.decorators import login_required

@login_required()
def clippyemail(request):
    current_user = request.user
    subject = 'Clippy here'
    message = 'Hi! I am clippy! You resserected me somehow so thanks!'
    # 这里可以填你的发件邮箱,或者用后面要讲的settings默认配置
    from_email = 'your-sender-email@example.com'
    recipient_list = [current_user.email]
    # 按正确顺序传参,也可以用关键字参数明确指定每个值
    send_mail(subject, message, from_email, recipient_list)

关于通过settings.py配置SMTP发送邮件的问题

当然可以!这其实是Django发送邮件的标准做法,配置好之后不需要每次调用send_mail都重复填写发件人、认证信息等,非常省心。

基本SMTP配置示例(在settings.py中)

根据你的邮箱服务商(比如Gmail、Outlook、企业邮箱)填写对应参数:

# 邮件核心配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.example.com'  # 替换成你的SMTP服务器地址,比如smtp.gmail.com
EMAIL_PORT = 587  # 常用端口:587(TLS加密)或465(SSL加密)
EMAIL_USE_TLS = True  # 启用TLS加密,对应587端口;如果用SSL则设置EMAIL_USE_SSL = True
EMAIL_HOST_USER = 'your-email@example.com'  # 你的发件邮箱账号
EMAIL_HOST_PASSWORD = 'your-password-or-app-specific-password'  # 邮箱密码,部分服务商需要用应用专用密码(比如Gmail)
DEFAULT_FROM_EMAIL = 'your-email@example.com'  # 设置默认发件人,后续调用send_mail可省略from_email参数

配置完成后,你甚至可以省略from_email参数,直接调用:

send_mail(subject, message, recipient_list=recipient_list)

Django会自动使用你在settings里配置的DEFAULT_FROM_EMAIL作为发件人,通过配置好的SMTP服务器发送邮件。

内容的提问来源于stack exchange,提问作者17lwinn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 22:07:39