「 python 」 python 实现发送邮件验证码

当我们在注册一个网页时,有的网页会让必须要短信验证、邮箱验证,才可以进行账号的注册。其实,我们在项目中会遇到很多问题,比如:当我们进行爬虫的时候,很容易由于网页的改版,造成我们事先写好的爬虫突然无效,此时就需要及时的通知到我们的后台管理人员,可以进行及时修改工作。所以使用短信或者邮件的发送是非常有必要的。

所以今天想来谈一下如何使用Python进行发送邮件的操作。

邮件验证

程序思路

程序运行的环境是 windows10 + Python 3.6,此次主要用到的库有 smtplib、MIMEText、Header

前期准备

准备邮箱。这里发送邮箱采用的是腾讯QQ邮箱,使用之前需要先去腾讯QQ中设置。获得客户端的授权码。在这里,我们先设置一个授权码,(记得保存好,不要被盗用哦)在后面我们会用到。

腾讯邮箱获取授权码

qq1.jpg
qq2.jpg
qq3.jpg

因为我之前已经设置过了,所以显示的是已开启状态。

网易163邮箱设置

163_1_.jpg
163_2.jpg

注意:

我们开启 POP3/SMTP服务 时,我们需要短信验证验证才可以开通。

程序源码

具体参数说明,请看源码注释,

send_email_code.py

# -*- coding: utf-8 -*-
# @Time    : 2019/7/25 15:00
# @Author  : hang1720
# @Site    :
# @File    : send_email_code.py
# @Software: PyCharm

# 发送纯文本
import smtplib
# 发送标题
from email.header import Header
# 邮件正文
from email.mime.text import MIMEText
import random

code = random.sample(list(range(1, 101)), 6)
code = list(map(lambda x: str(x), code))
code = ' '.join(code)


# print(sim)
def sendMail(user, pwd, sender, receiver, content, title):
   """
    说明:此函数实现发送邮件功能。
    :param user: 用户名
    :param pwd: 授权码
    :param sender: 发送方
    :param receiver: 接收方
    :param content: 邮件的正文
    :param title: 邮件的标题
    :return:
    """
    mail_host = "smtp.qq.com"  # qq的SMTP服务器
    # 第一部分:准备工作
    # 1.将邮件的信息打包成一个对象
    message = MIMEText(content, "plain", "utf-8")  # 内容,格式,编码
    # 2.设置邮件的发送者
    message["From"] = sender
    # 3.设置邮件的接收方
    # message["To"] = receiver
    # join():通过字符串调用,参数为一个列表
    message["To"] = ",".join(receiver)
    # 4.设置邮件的标题
    message["Subject"] = title

    # 第二部分:发送邮件
    try:
        # 1.启用服务器发送邮件
        # 参数:服务器,端口号
        smtpObj = smtplib.SMTP()
        smtpObj.connect(mail_host, 25)  # 25 为 SMTP 端口号
        # 2.登录邮箱进行验证
        # 参数:用户名,授权码
        smtpObj.login(mail_user, mail_pwd)
        # 3.发送邮件
        # 参数:发送方,接收方,邮件信息
        smtpObj.sendmail(mail_user, receiver, message.as_string())
        print("邮件发送成功")
    except:
        print('邮件发送失败')

    code_1 = input('请输入您收到的验证码:')
    if code == code_1:
        print('恭喜您输入的正确')


if __name__ == "__main__":
    mail_user = "[email protected]"
    mail_pwd = "cblkxxxxxxxxjcgj"
    mail_sender = "[email protected]"
    shoujian = input('请输入收件人:')
    csr = input('请输入抄送人:')
    receivers = csr.split(' ')
    mail_receiver = receivers + [shoujian]

    email_content = "人生苦短,我用Python ,您的验证码为:%s" % code
    email_title = "AID人工智能"

    sendMail(mail_user, mail_pwd, mail_sender,
             mail_receiver, email_content, email_title)

这里要说一点的是在设置message['to']时要注意的是,如果设置其他名字时,会被某些邮箱后台识别,提示发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件。请检查是否有用户发送病毒或者垃圾邮件。

以上就是如何使用Python发送邮件进行信息提示的,除此之外,也可以用于用户邮箱验证等操作。

你可能感兴趣的:(「 python 」 python 实现发送邮件验证码)