上期完成了其中一部分:https://blog.csdn.net/weiwenzem/article/details/12804484
继续接着做,先来看一下程序结构图
1.imagination是项目名
2main-program为主程序包,其中imagination.py为主程序
(1)cdkey中含有邮件发送模块,将登录密码发送给指定的邮箱
(2)Client用来更新
(3)Key生成密码
3.startingena.py引导程序启动
4.至于flies_del.bat好像没有什么实在的意义,先留着吧......
imaginationos\main-program\cdkey\scratch_2.py(怎么用Python发邮件,自行上百度)
import random
f = open("D:\imaginationos\main-program\cdkey\mm.txt")
quotes = f.readlines()
f.close()
sampling = random.sample(quotes, 1)
e = input("请输入您的电子邮箱地址(请输入正确有效的地址):")
host_server = 'smtp.qq.com'
sender_qq = '发送者的邮箱'
pwd = ''
receiver = [e]
mail_title = 'Imagination OS登录密码'
mail_content = e + "您好!\n感谢您使用Imagination OS系统,这里是您的登录密码 " + str(sampling) + ",请妥善保管。\n由于部分原因,您收到的代码可能为[" \
"'xxxxxxxxxxxxxxxx/n']," \
"请忽略多于的内容。\nImagination OS团队 "
# 初始化一个邮件主体
msg = MIMEMultipart()
msg["Subject"] = Header(mail_title, 'utf-8')
msg["From"] = sender_qq
# msg["To"] = Header("测试邮箱",'utf-8')
msg['To'] = ";".join(receiver)
# 邮件正文内容
msg.attach(MIMEText(mail_content, 'plain', 'utf-8'))
smtp = SMTP_SSL(host_server) # ssl登录
# login(user,password):
# user:登录邮箱的用户名。
# password:登录邮箱的密码,像笔者用的是网易邮箱,网易邮箱一般是网页版,需要用到客户端密码,需要在网页版的网易邮箱中设置授权码,该授权码即为客户端密码。
smtp.login(sender_qq, pwd)
# sendmail(from_addr,to_addrs,msg,...):
# from_addr:邮件发送者地址
# to_addrs:邮件接收者地址。字符串列表['接收地址1','接收地址2','接收地址3',...]或'接收地址'
# msg:发送消息:邮件内容。一般是msg.as_string():as_string()是将msg(MIMEText对象或者MIMEMultipart对象)变为str。
smtp.sendmail(sender_qq, receiver, msg.as_string())
# quit():用于结束SMTP会话。
smtp.quit()
imaginationos\main-program\Key\scratch_2.py
# coding=utf-8
import random
list = []
# 生成26个大写的字母
for x in range(65, 91):
a = str(chr(x))
list.append(a)
# 生成26个小写字母
for x in range(97, 123):
a = str(chr(x))
list.append(a)
# 生成10个数字
for x in range(10):
list.append(str(x))
'''
def gen_code():
a=random.sample(list,16)
print a
'''
# 生成16位激活码
def gen_code():
s = ''
for x in range(16):
a = random.choice(list)
s = s + a
print(s)
# 生成200个激活码
for x in range(200):
gen_code()
imaginationos\startingend.py
这里需要运行管理员,才能运行
import ctypes, sys
import os
def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
if is_admin():
# 这里写入需要管理员权限执行的操作
app = Application(backend="uia").start(r"D:\imaginationos\main-program\imaginationos.py")
pass
else:
if sys.version_info[0] == 3:
ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
def first():
import os
f = input("是否首次使用?(y/n):")
if f == "y":
os.system('D:\imaginationos\main-program\cdkey\scratch_2.py')
print("密码以发送至您的邮箱,请查收!")
os.system('D:\imaginationos\main-program\imaginationos.py')
elif f == "n":
os.system('D:\imaginationos\main-program\imaginationos.py')
else:
first()
first()
文件还需完善,等完成后,再贴上效果图......