PyQT 跟我学做密码管理器(5)

本文介绍了如何使用PyQT5和Python的smtplib库将密码管理器的数据备份到邮箱。首先,文章讨论了所需的环境和库,包括PyQT5、sqlite3和smtplib。接着,详细阐述了如何获取邮箱授权码并使用它来登录邮箱。然后,展示了如何构造邮件、添加附件以及从数据库中读取数据。最后,添加了将数据库文件作为附件通过邮件发送的功能,完成了密码管理器的备份功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PyQT 跟我学做密码管理器(5) —— 备份数据到邮箱

声明:本文借鉴https://blog.youkuaiyun.com/bigbennyguo/article/details/50755207 修改而来

前言

借鉴的文章是基于python2+pyqt4,本文是基于python3+pyqt5

环境

编辑器:Sublime Text3

操作系统:win10

Python3

所需要的库:主要是PyQT5,因为加了一点拓展功能,所以还有sqlite3,Image,pyinstaller

pip3 install pyqt5
pip3 install pyqt5-tools
pip3 install sqilte3
pip3 install Image
pip3 install pyinstaller

首先是pyqt5, 这个是我们的主要工具,用来做界面的,pyqt5-tools这个库主要是是在用QT Creator设计好界面之后,将ui文件转化为py文件;

sqlite3这个库可以安也可以不安,因为pyqt5里面有一个模块QtSql,它支持sqlite的操作;
Image这个库主要是用来处理一下图片资源,以及最后程序的图标的
pyinstaller 最后将程序转化为可执行的exe文件

邮箱登陆

python自带的smtblib库可以登陆邮箱,本文主要介绍如何登陆邮箱

如果是公司自己的邮箱,可能直接使用smtplib.SMTP().login()也许就登陆上去了

每个公司的邮箱可能不一样,这里介绍qq/163的邮箱登陆

使用python来登陆qq/163邮箱,第一件事,得从邮箱里面获取授权码

授权码应该是一个16位字母组成的

拿到授权码之后,我们就可以进行邮箱登陆了

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart   

class SendEmail():
    global send_user
    global email_host
    global password
    global user_list
    global sub
    password = ""                   #授权码
    email_host = "smtp.qq.com"     #邮箱host,如果是163的,则是smtp.163.com
    send_user = "123@qq.com"       #自己的qq邮箱账户或者163账户
    user_list = ['123@qq.com','123@163.com']        #收件人列表
    sub = "密码管理系统-密码备份"                    #邮件主题

    def __init__(self):
        self.server = smtplib.SMTP_SSL()
        self.server.connect(email_host,465)
        code,resp=self.server.login(send_user,password)    #登陆邮箱
        if code in (235, 503):                             #登陆成功的话,code应该为235,已经登陆过的话,code应该是503
            print('login success')
        else:
            print('没有登陆成功')
            return

如果登陆成功之后呢,就可以开始构造邮件了,构造邮件用到了python自带的email模块

如下:

        user = "shape" + "<" + send_user + ">"        #组装邮件消息头,包括收件人,发件人,邮件主题
        self.message = MIMEMultipart('mixed') 
        self.message['Subject'] = sub
        self.message['From'] = user
        self.message['To'] = ";".join(user_list)

邮件正文:

text_plain = MIMEText(content,'plain', 'utf-8') 

邮件附件:

#构造附件
        sendfile=open(filename,'rb').read()
        text_att = MIMEText(sendfile, 'base64', 'utf-8') 
        text_att["Content-Type"] = 'application/octet-stream'  
        new_name=filename.split('\\')[-1]
        print(new_name)
        text_att.add_header('Content-Disposition', 'attachment', filename=new_name)

完整的邮件类如下:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart   

class SendEmail():
    global send_user
    global email_host
    global password
    global user_list
    global sub
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值