相关文章推荐
鼻子大的人字拖  ·  postgresql if then ...·  11 月前    · 
打酱油的野马  ·  Android时间工具类 ...·  1 年前    · 

向指定对象发送验证码

在做一些个人的demo或者实战项目等,涉及登录验证的,可以通过该方式实现一个简易的邮箱发送验证码。

该方法使用了Python的smtplib第三方库,需要保证发送者的QQ邮箱开通了SMTP(一种电子邮件传输协议)服务。

在QQ邮箱的设置→账户→POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务处开启
开启前两个SMTP服务
开启后,可以在下方获取授权码
获取授权码
至此,准备工作已完成,接下来开始尝试发送邮箱。
该方法可用在登录验证时使用,做一些个人的小项目或者大作业实验之类等等。
data里的信息可根据实际情况进行更改,在上面的授权码需要复制至data中的password处(注意:发送者的邮箱需和授权码对应。)

from smtplib import SMTP_SSL
from email.mime.text import MIMEText
from email.header import Header
import random
data = {
    'sender':"111111111@qq.com", # 发送者邮箱,自己用可写死
    'password':"xxxxxxxxxxxxx", # 在开启SMTP服务后,可以生成授权码,此处为授权码
    'subject':"xxx验证码", # 邮件主题名,没有违规文字都行
class SendEmail:
    def __init__(self, data,receiver):
        self.sender = data.get('sender','') # 发送者QQ邮箱
        self.receiver = receiver # 接收者邮箱
        self.password = data.get('password','')
        self.subject = data.get('subject','')
    def load_message(self):
        verification_code = self.generate_verification()
        text = f'验证码为:{verification_code}'
        message = MIMEText(text, "plain", "utf-8") # 文本内容,文本格式,编码
        message["Subject"] = Header(self.subject, "utf-8") # 邮箱主题
        message["From"] = Header(self.sender, "utf-8") # 发送者
        message["To"] = Header(self.receiver, "utf-8") # 接收者
        return message,verification_code
    def send_email(self):
        message,verification_code = self.load_message()
        smtp = SMTP_SSL("smtp.qq.com")  #需要发送者QQ邮箱开启SMTP服务
        smtp.login(self.sender, self.password)
        smtp.sendmail(self.sender, self.receiver, message.as_string())
        return verification_code
    # 生成6位随机数验证码
    def generate_verification(self):
        random_list = list(map(lambda x:random.randint(0,9),[y for y in range(6)])) # 这里使用map函数跟lambda匿名函数来生成随机的六位数
        code = "".join('%s' % i for i in random_list)
        return code
#receiver里放上发送对象的邮箱
verification = SendEmail(data=data,receiver='xxxxxxxxx@qq.com').send_email()
print(verification)
>>> 445571

最终效果:
实现效果
最好加上发送验证码的时间间隔和验证码有效时间的设计,避免出现点一下就发送一次和验证码一直不过期的情况。。。

#发送多种类型的邮件 from email.mime.multipart import MIMEMultipart msg_from = '1508691067@qq.com' # 发送方邮箱 passwd = 'xxx' #就是上面的授权码 to= ['15 其实Python使用QQ邮箱发送Email代码很简单,短短几行代码就可以实现这个功能使用到的模块有smtplib和email这个两个模块,关于这两个模块的方法就不多说了。不了解的朋友们可以查看这篇文章:python使用smtplib和email模块发送邮件实例 我们先说说网上常用的使用这那两个模块发送邮件的方法 代码如下: import smtplib from email.mime.text import MIMEText from email.header import Header def SendEmail(fromAdd, toAdd, subject, atta 这个例子中我们实现了两个功能:菜单按钮、带倒计时的按钮(账户注册的时候经常会碰到)。 from PyQt5.QtWidgets import QWidget, QApplication, QPushButton, QMenu from PyQt5.QtCore import QTimer import sys class Example(QWidget): def __...
服务器计算数据有时需要大量的时间,使用程序发送一封邮件是一种免费便捷的通知方式,可以让我们及时收到程序中断或者程序运行完成的信息,而不用一直盯着屏幕看。以下以python为例写一个邮件发送程序: import smtplib from email.mime.text import MIMEText from email.header import Header class Mail(object): def __init__(self,user,token): self.host = smtp.qq.com # qq邮箱服务器地址 self.user = user
Python发送126邮件,供大家参考,具体内容如下 今天想做个自动化邮件提醒的功能,最近刚好在学习python,都说python那么强大,想试一下python能否搞定,搜一下资料,果真可以,而且又简单通俗易懂 from email.mail.text import MIMEText import smtplib #发件人列表 to_list=["zhangsan@163.com", "lisi@qq.com"] #对于大型的邮件服务器,有反垃圾邮件的功能,必须登录后才能发邮件,如126,163 mail_server="smtp.126.com" # 126的邮件服务器 mail_l
app = Flask(__name__) app.config['MAIL_SERVER'] = 'smtp.qq.com' app.config['MAIL_PORT'] = 465 app.config['MAIL_USE_TLS'] = False app.config['MAIL_USE_SSL'] = True app.config['MAIL_USERNAME'] = 'your_qq_email@qq.com' # 替换为你的 QQ 邮箱 app.config['MAIL_PASSWORD'] = 'your_email_password' # 替换为你的 QQ 邮箱密码 mail = Mail(app) 4. 创建发送邮件的函数,其中包括生成验证码的逻辑: ```python import random def generate_code(): code = '' for i in range(6): code += str(random.randint(0, 9)) return code def send_email(email): code = generate_code() message = Message(subject='验证码', recipients=[email]) message.body = f'您的验证码是:{code}' mail.send(message) return code 5. 在 Flask 应用中定义路由,调用发送邮件的函数: ```python from flask import request @app.route('/send_code', methods=['POST']) def send_code(): email = request.form.get('email') code = send_email(email) return {'code': code} 以上代码中,`/send_code` 路由接收来自前端的邮箱地址,调用 `send_email` 函数发送验证码,并将验证码返回给前端。 当用户在前端输入验证码后,你可以在 Flask 应用中编写逻辑进行验证。