django 发送 HTML 模板邮件

该博客介绍了如何在Django中配置SMTP邮件发送参数,并展示了如何创建一个名为`_send_mail_template`的函数,用于根据不同的模板和上下文发送HTML格式的邮件,如密码重置通知。邮件内容通过`django.template.loader`渲染模板,使用`EmailMultiAlternatives`发送,确保邮件以HTML格式显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# smtp邮件发送参数
settings 中设置
 
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.sina.com'
EMAIL_PORT = 25
EMAIL_HOST_USER = ‘*******@sina.com'
DEFAULT_FROM_EMAIL = ‘*********@sina.com'
EMAIL_HOST_PASSWORD = ‘***************'
EMAIL_USE_TLS = True
 
 
 
import sys
from email.MIMEText import MIMEText
from django.core.mail import EmailMultiAlternatives
from django.template import loader
 
 
recipients:收件人,是一个数组
sender 发件人
template 模板名 用于寻找要发送模板
context 传入模板中的参数,是字典,会根据所传的模板不同而不同
def _send_mail_template(recipients, sender=None, template=None, context=None):
if context is None:
    logger.error("_send_mail_template context is None.")
    return False
if not sender:
    sender = settings.DEFAULT_FROM_EMAIL
html_body = ""
if template == 'password_reset':
    html_body = loader.render_to_string("email/reset_password.html",context,)
 
reload(sys)
sys.setdefaultencoding('utf-8')
subject = ""
if template == 'password_reset':
    subject = '密码重置'  # 邮件标题
 
text_content = ''
msg = MIMEText(html_body, 'html','utf-8')
msg['subject'] = subject  # 邮件主题
msg['from'] = sender  # 发件人
msg['to'] = recipients  # 收件人
 
try:
    # headers = {"Cc":",".join(cclist)}这一部分起到显示的作用。 cclist 抄送名单
    # 不加的话,邮件是可以发送成功的,但是发送的邮件里不显示抄送的名单,回复的时候不能回复所有,不方便
    # msg = EmailMultiAlternatives(subject, text_content, from_email, tolist, cclist,
    #                              headers={"Cc": ",".join(cclist)})
    msg = EmailMultiAlternatives(subject, text_content, sender, recipients)
    # 邮件显示html_body的内容,html编码
    msg.attach_alternative(html_body, "text/html")
    msg.send()
    print ("邮件发送成功,没有收到请查看垃圾箱")
    return True
except Exceptione:
    return False
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值