Python使用QQ邮箱发送验证码

向指定对象发送验证码

在做一些个人的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

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

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
BeeWare是一个Python开发平台,提供了一些工具和库,可以用于构建跨平台的应用程序。在Python中实现邮箱验证码登录功能,可以使用BeeWare提供的工具和库,下面是一个示例: 首先,需要安装BeeWare平台,可以通过以下命令进行安装: ``` pip install briefcase ``` 安装完成后,可以使用以下命令创建一个基于BeeWare的Python应用程序: ``` briefcase new ``` 接下来,可以使用以下代码实现邮箱验证码登录功能: ```python import smtplib from email.mime.text import MIMEText from email.utils import formataddr import random # 发送邮件的邮箱和密码 sender_email = '[email protected]' sender_password = 'your_email_password' # 邮件内容 def send_email(receiver_email, code): msg = MIMEText(f'您的验证码是{code},请勿泄露。', 'plain', 'utf-8') msg['From'] = formataddr(('Python邮件系统', sender_email)) msg['To'] = formataddr(('用户', receiver_email)) msg['Subject'] = '邮箱验证码' # 发送邮件 server = smtplib.SMTP_SSL('smtp.qq.com', 465) server.login(sender_email, sender_password) server.sendmail(sender_email, [receiver_email], msg.as_string()) server.quit() # 生成随机验证码 def generate_code(): return str(random.randint(100000, 999999)) # 验证码登录 def login_with_code(email): code = generate_code() send_email(email, code) input_code = input('请输入收到的验证码:') if input_code == code: print('登录成功') else: print('验证码错误') # 测试 login_with_code('[email protected]') ``` 以上代码实现了一个基本的邮箱验证码登录功能,包括发送验证码邮件、生成随机验证码、验证用户输入的验证码等。可以根据具体需求对代码进行修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值