Django发送HTML格式的邮件

1. settings.py配置

EMAIL_HOST = 'smtp.qq.com'       # 邮件发送的服务器,开启SMTP服务时候,一般可以查到地址
EMAIL_HOST_USER = '邮箱地址'      # 用于发送邮件的邮箱地址
EMAIL_HOST_PASSWORD = 'password' # SMTP服务的授权密码,不是邮箱的登录密码
EMAIL_USE_TLS = True             # 是否开启安全协议,一般默认开启
EMAIL_PORT = 25					 # SMTP服务器开放端口

2. 普通邮件发送

from django.core.mail import send_mail
from django.conf import settings

 send_mail(subject,                  # 邮件标题
           '邮件内容',                # 邮件内容
           settings.EMAIL_HOST_USER, # 用于发送邮件的用户,默认用上述配置文件的用户
           [email],			         # 接收邮件的用户列表
           fail_silently=False,      # 发送失败是否提示,一般默认False
  )

3. 发送HTML格式邮件

  • 第一种方法
from django.core.mail import send_mail
from django.conf import settings
html_message= '这是一段html代码'
send_mail(subject,                   # 邮件标题
           '这里为空就行',            # 邮件内容
           settings.EMAIL_HOST_USER, # 用于发送邮件的用户,默认用上述配置文件的用户
           [email],			         # 接收邮件的用户列表
           fail_silently=False,      # 发送失败是否提示,一般默认False
           html_message=html_message # 要发送HTML内容
)
  • 第二种方法
from django.core.mail import EmailMessage
from django.conf import settings
msg = EmailMessage(subject,                  # 邮件主题 
				   html_content,             # 邮件内容,直接使用html代码就行
                   settings.EMAIL_HOST_USER, # 用于发送邮件的用户
                   ['[email protected]']      # 接收邮件的用户列表
)
msg.content_subtype = 'html'   # 如果要发送html格式邮件,需要指定一下,如果发送普通邮件,无须这一行代码
msg.send()  
  • 第三种方法

这也不能算得上是第三种方法,只是说用另外一种渲染HTML格式,但是使用这种方法维护极其方便

from django.core.mail import EmailMessage
from django.templates.loader import render_to_string

# 跟渲染模板一样,事先写好html模板,可以将html代码与python代码分离开来,方便维护
data = {'name':'join'}
html_content= render_to_string('example.html', data)

msg = EmailMessage(subject,                  # 邮件主题 
				   html_content,             # 邮件内容,直接使用html代码就行
                   settings.EMAIL_HOST_USER, # 用于发送邮件的用户
                   ['[email protected]']      # 接收邮件的用户列表
)
msg.content_subtype = 'html'   
msg.send()  

大家有问题可以微信交流一下~~
Django发送HTML格式的邮件_第1张图片

你可能感兴趣的:(python,django)