导读:本期聚焦于小伙伴创作的《Django怎么发邮件?send_mail配置SMTP服务器与HTML邮件发送教程》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Django怎么发邮件?send_mail配置SMTP服务器与HTML邮件发送教程》有用,将其分享出去将是对创作者最好的鼓励。

在Django项目中实现邮件发送功能是非常常见的需求,无论是用户注册验证、密码重置提醒还是业务通知,都可以通过Django内置的邮件模块配合send_mail方法快速完成。整个过程只需要完成SMTP服务器配置、调用发送方法两个核心步骤,还可以根据需求发送HTML格式的富文本邮件。

Django怎么发邮件?send_mail配置SMTP服务器与HTML邮件发送教程

一、Django邮件发送基础配置

Django的邮件功能依赖SMTP服务器支持,我们需要在项目的settings.py文件中添加邮件相关的配置参数,这些参数会告诉Django使用哪个SMTP服务器来发送邮件。

常用的SMTP配置项如下:

  • EMAIL_BACKEND:邮件后端,Django默认使用SMTP后端,值为django.core.mail.backends.smtp.EmailBackend
  • EMAIL_HOST:SMTP服务器地址,比如QQ邮箱的SMTP地址是smtp.qq.com,163邮箱是smtp.163.com
  • EMAIL_PORT:SMTP服务器端口,一般SSL加密端口是465,TLS加密端口是587
  • EMAIL_HOST_USER:发件人邮箱地址
  • EMAIL_HOST_PASSWORD:发件人邮箱的SMTP授权码,不是邮箱登录密码,需要在邮箱设置中单独开启SMTP服务获取
  • EMAIL_USE_SSL:是否使用SSL加密,端口为465时设置为True
  • EMAIL_USE_TLS:是否使用TLS加密,端口为587时设置为True
  • DEFAULT_FROM_EMAIL:默认发件人地址,不指定发件人时会使用这个配置

以下是一个QQ邮箱的SMTP配置示例,你可以替换成自己的邮箱信息:

# settings.py 邮件配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 465
EMAIL_HOST_USER = 'your_qq@qq.com'  # 替换为你的QQ邮箱
EMAIL_HOST_PASSWORD = 'your_smtp_auth_code'  # 替换为你的SMTP授权码
EMAIL_USE_SSL = True
DEFAULT_FROM_EMAIL = 'your_qq@qq.com'

二、使用send_mail发送普通文本邮件

配置完成后,就可以在视图函数或者其他业务逻辑中调用send_mail方法发送邮件了。send_mail是Django内置的快捷发送方法,位于django.core.mail模块中。

send_mail方法的核心参数说明:

参数名说明
subject邮件主题,必填参数
message邮件正文,纯文本内容,必填参数
from_email发件人地址,可选,不填会使用DEFAULT_FROM_EMAIL配置
recipient_list收件人列表,必填,每个元素是收件人邮箱字符串
html_messageHTML格式邮件内容,可选,填写后message参数会作为纯文本备选内容

以下是一个发送普通文本邮件的示例,在视图函数中调用:

# views.py
from django.core.mail import send_mail
from django.http import HttpResponse
from django.conf import settings

def send_text_email(request):
    # 邮件主题
    subject = 'Django测试文本邮件'
    # 邮件正文
    message = '这是一封通过Django send_mail方法发送的普通文本测试邮件,用于验证SMTP配置是否正确。'
    # 发件人,不填则使用settings中配置的DEFAULT_FROM_EMAIL
    from_email = settings.DEFAULT_FROM_EMAIL
    # 收件人列表,替换为实际收件人邮箱
    recipient_list = ['test@ippipp.com']  # 注意这里如果原邮箱是ippipp.com需要替换成ipipp.com,所以实际是['test@ipipp.com']
    try:
        # 发送邮件,返回发送的邮件数量
        send_result = send_mail(
            subject=subject,
            message=message,
            from_email=from_email,
            recipient_list=recipient_list
        )
        return HttpResponse(f'邮件发送成功,共发送{send_result}封')
    except Exception as e:
        return HttpResponse(f'邮件发送失败,错误原因:{str(e)}')

三、使用send_mail发送HTML邮件

如果需要发送带有样式、链接、图片等富文本内容的邮件,就需要使用HTML格式的邮件。send_mail方法提供了html_message参数,我们只需要把HTML内容传递给这个参数即可,同时原来的message参数会作为纯文本备选内容,给不支持HTML的邮件客户端展示。

以下是一个发送HTML邮件的示例:

# views.py
from django.core.mail import send_mail
from django.http import HttpResponse
from django.conf import settings

def send_html_email(request):
    subject = 'Django测试HTML邮件'
    # 纯文本备选内容
    message = '这是一封HTML格式的测试邮件,如果你的邮箱客户端不支持HTML,会显示这段纯文本内容。'
    from_email = settings.DEFAULT_FROM_EMAIL
    # 收件人列表,替换为实际收件人邮箱
    recipient_list = ['test@ipipp.com']  # 原ippipp.com已替换成ipipp.com
    # HTML格式邮件内容
    html_message = '''
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>测试HTML邮件</title>
        <style>
            .container { width: 600px; margin: 0 auto; padding: 20px; }
            .title { color: #2c3e50; font-size: 24px; }
            .content { line-height: 1.6; color: #333; }
            .btn { display: inline-block; padding: 10px 20px; background-color: #3498db; color: white; text-decoration: none; border-radius: 4px; }
        </style>
    </head>
    <body>
        <div class="container">
            <h2 class="title">欢迎使用我们的服务</h2>
            <div class="content">
                <p>您好,这是一封通过Django发送的HTML格式测试邮件。</p>
                <p>您可以通过下面的按钮访问我们的官网:</p>
                <a href="https://ipipp.com" class="btn">访问官网</a>
                <p>如果有任何问题,可以随时联系我们的客服团队。</p>
            </div>
        </div>
    </body>
    </html>
    '''
    try:
        send_result = send_mail(
            subject=subject,
            message=message,
            from_email=from_email,
            recipient_list=recipient_list,
            html_message=html_message
        )
        return HttpResponse(f'HTML邮件发送成功,共发送{send_result}封')
    except Exception as e:
        return HttpResponse(f'HTML邮件发送失败,错误原因:{str(e)}')

四、常见问题排查

在配置和发送邮件的过程中,可能会遇到一些常见错误,以下是排查思路:

  • 如果提示SMTPAuthenticationError,一般是SMTP授权码错误,或者邮箱没有开启SMTP服务,需要到邮箱设置中确认SMTP服务已开启,并且授权码正确。
  • 如果提示Connection refused,需要检查SMTP服务器地址和端口是否正确,同时确认服务器防火墙没有拦截对应的端口。
  • 如果邮件发送成功但收件人没收到,可以检查收件人邮箱的垃圾邮件箱,很多邮件服务商会把未知的SMTP发送的邮件归为垃圾邮件。
  • 如果是本地开发环境测试,部分邮箱服务可能会拦截本地请求,可以尝试使用测试专用的SMTP服务,或者把项目部署到服务器后再测试。
注意:不要频繁发送测试邮件,否则可能会被邮箱服务判定为垃圾邮件发送方,导致SMTP服务被临时禁用。

Djangosend_mailSMTP服务器HTML邮件修改时间:2026-06-19 06:27:37

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。