首页 > 编程 > Python > 正文

django中send_mail功能实现详解

2020-02-22 23:07:45
字体:
来源:转载
供稿:网友

前言

我们大家应该都知道python中smtplib模块用于邮件的功能,而django对这个这模块进行封装,使得它使用起来十分简单。 django.core.mail就是django邮件的核心模块。下面话不多说了,来随着小编来一起看看详细的介绍吧。

两个常用函数

它提供了两个函数,使用起来十分的简单:

def send_mail(subject, message, from_email, recipient_list,  fail_silently=False, auth_user=None, auth_password=None,  connection=None, html_message=None): pass    def send_mass_mail(datatuple, fail_silently=False, auth_user=None,   auth_password=None, connection=None): pass# 参数介绍 # subject: 邮件主题 # message: 邮件内容 # from_email: 发件人 # recipient_list: 收件人,这是一个列表,可以有多个收件人 # 以上4个在参数 在send_mass_mail中,会写在datatuple这个元组中 # fail_silently: 是否报错,True的话表忽略异常 # auth_user&auth_password:账号密码 # connection: 表示这个的链接对象,后续会提到 # html_message: send_mail方法独有,可以比较简单地实现一个html文本的传输,具体我也没使用过,不是很了解。

一般情况下,我们需要在setting中进行配置,除了必须配置的host和port,一般我们也将账号密码写在这里,这样每次调用函数就不用传递这两个参数,当不传递这两个值,他们就会默认去读取setting中的值

返回值是成功发送了多个message,而不是多少个人,一般使用send_mail,都返回1

# settings.py# 我使用的是新浪的,host可以在对应邮箱的设置中找到EMAIL_HOST = 'smtp.sina.com'EMAIL_PORT = 25# 你的邮箱账号与密码EMAIL_HOST_USER = 'viptestfordjango@sina.com'EMAIL_HOST_PASSWORD = '******'# 由于使用25端口,一般都不使用TLS机密,SSL和TSL只需要设置一个,他们同时为True或FalseEMAIL_USE_TLS = False# 发件人,只有这个变量名可以自己自定义,设置在这里是为了减少每次去写EMAIL_FROM = 'viptestfordjango@sina.com'

实例

from django.core.mail import send_mail, send_mass_mailfrom string import lowercase,uppercase,digitsfrom random import randintfrom project.settings import EMAIL_FROMdef send_code_email(email): """ 发送验证码 """ # 0-9 a-z A-z code = '' seeds= lowercase+uppercase+digits length = len(seeds) # 生成4位验证码 for i in range(4):  code += seeds[randint(0, length-1)] send_title = '重置密码' send_message = '你的验证码是:{0}。'.format(code) send_status = send_mail(email_title, email_body, EMAIL_FROM, [email])def send_hello_email(email1, email2): """ 给email1发送 新年好 给email2发送 Happy New Year """ # message格式(subject, message, from_email, recipient_list) message1 = ('新年好', '新年好', 'EMAIL_FROM', [email]) message2 = ('Happy New Year', 'Happy New Year', EMAIL_FROM, [email2]) send_status=send_mass_mail((message1, message2), fail_silently=False)            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表