Django 邮件发送模块SMTP使用详解
概述
Django 自带了邮件发送模块,可以通过 SMTP 协议将邮件发送出去。本教程将详细讲解 Django 如何配置和使用 SMTP 协议发送邮件。
配置
在 Django 项目配置文件 settings.py
中进行 SMTP 邮件发送模块的配置。
# SMTP 邮件服务器地址
EMAIL_HOST = 'smtp.qq.com'
# 端口号,默认是 587
EMAIL_PORT = 587
# 是否需要 TLS 安全连接,默认是 False
EMAIL_USE_TLS = True
# 使用的邮箱账号
EMAIL_HOST_USER = 'example@qq.com'
# 邮箱账号的授权码,而不是邮箱的登录密码
EMAIL_HOST_PASSWORD = 'xxxxxxxxxx'
# 邮件的默认发送者,可以为空
DEFAULT_FROM_EMAIL = 'example@qq.com'
# 是否将发送的邮件存储为文件,默认是 False
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
发送邮件
在 Django 项目中,可以通过以下代码进行邮件发送:
from django.core.mail import send_mail
subject = 'Django 邮件发送测试'
message = '这是一封测试邮件。'
from_email = 'example@qq.com'
recipient_list = ['example1@qq.com', 'example2@qq.com']
send_mail(subject, message, from_email, recipient_list)
其中,subject
表示邮件主题,message
表示邮件正文内容,from_email
表示发送者的邮件地址,recipient_list
表示接收者的邮件地址,可以是一个列表。
带附件的邮件
在 Django 中发送带附件的邮件:
from django.core.mail import EmailMultiAlternatives
from django.conf import settings
from django.template.loader import render_to_string
subject = 'Django 邮件发送测试'
from_email = 'example@qq.com'
to = 'example1@qq.com'
text_content = '这是一封测试邮件。'
html_content = render_to_string('email_template.html', {'username': 'user', 'password': '123456'})
email = EmailMultiAlternatives(subject, text_content, from_email, [to])
email.attach_alternative(html_content, "text/html")
email.attach_file(settings.STATIC_ROOT + '/img/test.png') # 附件
email.send()
邮件正文支持 HTML 格式,使用 EmailMultiAlternatives
代替 send_mail
,可以在邮件正文中插入 HTML。
结论
通过以上的配置和示例,可以使用 SMTP 协议在 Django 项目中发送各种类型的邮件。需要注意的是,发送邮件的账号要开启 SMTP 协议,并获取授权码,授权码区别于登录密码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:django 邮件发送模块smtp使用详解 - Python技术站