tkinter发送验证码给邮箱并验证
时间: 2023-07-13 18:12:18 浏览: 98

发送电子邮件验证代码
可以使用Python的smtplib和random库来实现发送验证码给邮箱的功能,然后使用tkinter来实现用户输入验证码的界面和验证功能。
以下是一个简单的示例代码:
```python
import smtplib
import random
from tkinter import *
# 邮件服务器地址和端口
SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587
# 发送者邮箱和密码
SENDER_EMAIL = '你的邮箱地址'
SENDER_PASSWORD = '你的邮箱密码'
# 验证码长度
CODE_LENGTH = 6
# 邮件内容模板
EMAIL_TEMPLATE = '你的验证码是:{}'
# 生成随机验证码
def generate_code(length):
code = ''
for i in range(length):
code += str(random.randint(0, 9))
return code
# 发送邮件
def send_email(to_email, code):
try:
server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
server.starttls()
server.login(SENDER_EMAIL, SENDER_PASSWORD)
subject = '验证码'
body = EMAIL_TEMPLATE.format(code)
message = f'Subject: {subject}\n\n{body}'
server.sendmail(SENDER_EMAIL, to_email, message)
server.quit()
return True
except:
return False
# 验证验证码
def verify_code(code, input_code):
return code == input_code
# 发送验证码并显示界面
def send_code():
# 生成随机验证码
code = generate_code(CODE_LENGTH)
# 发送邮件
to_email = email_entry.get()
if send_email(to_email, code):
# 显示验证码输入界面
email_frame.pack_forget()
code_frame.pack()
code_label.config(text=f'验证码已发送至 {to_email}')
# 设置验证函数
verify_func = lambda: verify(code)
# 设置焦点
code_entry.focus()
else:
# 显示错误信息
error_label.config(text='发送失败,请检查邮箱地址')
# 验证验证码并关闭窗口
def verify(code):
input_code = code_entry.get()
if verify_code(code, input_code):
# 验证成功,关闭窗口
root.destroy()
else:
# 验证失败,显示错误信息
error_label.config(text='验证码错误,请重新输入')
code_entry.delete(0, END)
code_entry.focus()
# 创建主窗口
root = Tk()
root.title('发送验证码')
# 创建邮箱输入界面
email_frame = Frame(root)
email_label = Label(email_frame, text='请输入邮箱地址:')
email_entry = Entry(email_frame)
email_button = Button(email_frame, text='发送验证码', command=send_code)
error_label = Label(email_frame, fg='red')
email_label.pack()
email_entry.pack()
email_button.pack()
error_label.pack()
# 创建验证码输入界面
code_frame = Frame(root)
code_label = Label(code_frame)
code_entry = Entry(code_frame, show='*')
code_button = Button(code_frame, text='验证', command=verify)
error_label = Label(code_frame, fg='red')
code_label.pack()
code_entry.pack()
code_button.pack()
error_label.pack()
# 将邮箱输入界面放到窗口中
email_frame.pack()
# 进入主循环
root.mainloop()
```
使用时,只需要将代码中的`SENDER_EMAIL`和`SENDER_PASSWORD`替换为你自己的邮箱地址和密码即可。运行程序后,输入要发送验证码的邮箱地址,点击发送验证码按钮即可发送验证码。发送成功后,程序会显示一个新的界面,要求输入验证码。输入验证码后点击验证按钮,如果验证码正确,程序会自动关闭窗口,否则会提示验证码错误。
阅读全文
相关推荐











