SMTP邮件推送以及验证码

SMTP邮件推送以及验证码

验证码的生成方式

  • 在进行登陆注册的时候,往往需要有验证的功能,以及很多地方都需要有类似的功能

  • 其原理主要是利用random函数的sample函数而实现的

  • 代码如下

code_element_list = []
# 添加0-9数字
for i in range(10):
    code_element_list.append(str(i))
# 添加A-Z数字
for i in range(65, 91):
    code_element_list.append(chr(i))
# 添加a-z数字
for i in range(97, 123):
    code_element_list.append(chr(i))

def generate_verification_code():
    '''生成6位验证码
    参数:
        input:None
        output: code
    '''
    return ''.join(random.sample(code_element_list, 6))

SMTP邮件推送

  • 构造一个邮件对象就是一个Messag对象,如果构造一个MIMEText对象,就表示一个文本邮件对象,如果构造一个MIMEImage对象,就表示一个作为附件的图片,要把多个对象组合起来,就用MIMEMultipart对象,而MIMEBase可以表示任何对象。它们的继承关系如下
Message
	MIMEBase
        MIMEMultipart
        MIMENonMultipart
            MIMEMessage
            MIMEText
            MIMEImage

以下是阿里云邮件推送服务的python API接口:是一份十分不错的样例,可以参照着使用。

# -*- coding:utf-8 -*-
import smtplib
import email
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.base import MIMEBase
from email.mime.application import MIMEApplication
from email.header import Header
# 发件人地址,通过控制台创建的发件人地址
username = '***'
# 发件人密码,通过控制台创建的发件人密码
password = '***'
# 自定义的回复地址
replyto = '***'
# 收件人地址或是地址列表,支持多个收件人,最多30个
#rcptto = '***,***'
rcptto = '***'
# 构建alternative结构
msg = MIMEMultipart('alternative')
msg['Subject'] = Header('自定义信件主题'.decode('utf-8')).encode()
msg['From'] = '%s <%s>' % (Header('自定义发信昵称'.decode('utf-8')).encode(), username)
msg['To'] = rcptto
msg['Reply-to'] = replyto
msg['Message-id'] = email.utils.make_msgid()
msg['Date'] = email.utils.formatdate() 
# 构建alternative的text/plain部分
textplain = MIMEText('自定义TEXT纯文本部分', _subtype='plain', _charset='UTF-8')
msg.attach(textplain)
# 构建alternative的text/html部分
texthtml = MIMEText('自定义HTML超文本部分', _subtype='html', _charset='UTF-8')
msg.attach(texthtml)
# 发送邮件
try:
    client = smtplib.SMTP()
    #python 2.7以上版本,若需要使用SSL,可以这样创建client
    #client = smtplib.SMTP_SSL()
    #SMTP普通端口为25或80
    client.connect('smtpdm.aliyun.com', 25)
    #开启DEBUG模式
    client.set_debuglevel(0)
    client.login(username, password)
    #发件人和认证地址必须一致
    #备注:若想取到DATA命令返回值,可参考smtplib的sendmaili封装方法:
    #      使用SMTP.mail/SMTP.rcpt/SMTP.data方法
    client.sendmail(username, rcptto, msg.as_string())
    client.quit()
    print '邮件发送成功!'
except smtplib.SMTPConnectError, e:
    print '邮件发送失败,连接失败:', e.smtp_code, e.smtp_error
except smtplib.SMTPAuthenticationError, e:
    print '邮件发送失败,认证错误:', e.smtp_code, e.smtp_error
except smtplib.SMTPSenderRefused, e:
    print '邮件发送失败,发件人被拒绝:', e.smtp_code, e.smtp_error
except smtplib.SMTPRecipientsRefused, e:
    print '邮件发送失败,收件人被拒绝:', e.smtp_code, e.smtp_error
except smtplib.SMTPDataError, e:
    print '邮件发送失败,数据接收拒绝:', e.smtp_code, e.smtp_error
except smtplib.SMTPException, e:
    print '邮件发送失败, ', e.message
except Exception, e:
    print '邮件发送异常, ', str(e)
  • 如果想要比较好看的模板,可以直接打开自己的邮件挑选比较好看的之前网站发送的验证界面
    在这里插入图片描述
  • 然后按F12,然后选择元素
    在这里插入图片描述
  • 将代码copy过来放置在邮件中的html目录即可
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值