settings.py中配置项:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.qq.com' # QQ邮箱的smtp服务器
EMAIL_PORT = 465 # 端口为465或587
EMAIL_USE_SSL = True # SSL加密方式设置为True
EMAIL_HOST_USER = '**@qq.com' # 这里是你的邮箱账号
EMAIL_HOST_PASSWORD = '***' # 注意这里不能用你邮箱账号的密码,而要用申请的设备授权码。
EMAIL_SENDER = '' # 这里是自定义的配置,用于发送邮件的抬头
封装好的发送邮件的工具
"""
用此功能,需在settings.py中配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.qq.com' # 邮箱的smtp服务器 新浪邮箱smtp.sina.com;搜狐邮箱smtp.sohu.com;126邮箱smtp.126.com;QQ邮箱smtp.qq.com;163邮箱smtp.163.com;
EMAIL_PORT = 465 # 端口为465或587
EMAIL_USE_SSL = True # SSL加密方式设置为True
EMAIL_HOST_USER = '' # 这里是你的邮箱账号
EMAIL_HOST_PASSWORD = '' # 注意这里不能用你邮箱账号的密码,而要用申请的设备授权码。
EMAIL_SENDER = '' # 发送抬头
"""
import os
from django.core.mail import EmailMessage
from django.conf import settings
from utils.exceptions import APIException
def send_email(subject, content, to_list, cc=None, attach_list=None, content_subtype='plain',
file_max_size=1024 * 1024 * 50):
"""
发邮件:163邮箱每天上限为600封
邮箱不存在不会报错,发件的邮箱会收到邮件被退回的通知
如果主送人员的邮件不存在,抄送人员邮箱存在, 抄送会正常发送,主送失败
subject:标题
content:内容(支持html语言 如果是html语言,需要将content_subtype设置成html)
from_email:发件人信息 eg:'单位名称<邮件>'
to_list:发送给谁['姓名<邮箱>']或['邮箱']
cc: 抄送列表 格式:['姓名<邮箱>']或['邮箱']
attach_list:附件绝对路径列表 eg:['1.png','2.png']
content_subtype:内容的类型 plain:纯文本 html:超文本标记语言
file_max_size:附件最大允许多大 不允许超过50兆 可以设置到更小
return: bool 是否发送成功True成功 False失败
"""
email = EmailMessage(
subject=subject,
body=content,
from_email='%s<%s>' % (getattr(settings, 'EMAIL_SENDER'), getattr(settings, 'EMAIL_HOST_USER')),
to=to_list,
cc=cc
)
email.content_subtype = content_subtype
if attach_list:
for attach in attach_list:
if not os.path.exists(attach):
raise APIException(message="%s文件不存在" % attach)
if os.path.getsize(attach) >= file_max_size:
raise APIException(message="%s文件大小超过限制" % attach)
email.attach_file(attach)
res = email.send()
if res == 1:
return True
return False
调用方式:
res = send_email('测', '<p style="color: red;">这是一段红色的文字。</p>',
['姓名<邮箱@163.com>'],
cc=['姓名<邮箱@163.com>'],
content_subtype='html',
attach_list=['文件路径']
)
结果: