pyqt5_站点管理_email_windows
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,from PyQt5.QtWidgets import QWidget,QLineEdit,QLabel,QPushButton,QGridLayout,QHBoxLayout,QGroupBox,Q
千家信息网最后更新 2026年11月01日pyqt5_站点管理_email_windows
from PyQt5.QtWidgets import QWidget,QLineEdit,QLabel,QPushButton,QGridLayout,QHBoxLayout,QGroupBox,QComboBox,QMessageBoximport pickle,smtplib,osfrom email import encodersfrom email.header import Headerfrom email.utils import parseaddr,formataddrfrom email.mime.text import MIMEText#定义email窗口class email_window(QWidget): def __init__(self): super().__init__() self.email_stmp = QLineEdit() self.email_name = QLineEdit() self.email_user = QLineEdit() self.email_password = QLineEdit() self.email_password.setEchoMode(QLineEdit.Password) self.email_test = QLineEdit() self.dir_email = {} self.list_users = [] self.email_users = QLineEdit() self.email_suers_combobox = QComboBox() self.initUI() self.initEmail() def initUI(self): stmp_label = QLabel('SMTP服务器:') name_label = QLabel('地区/单位:') user_label = QLabel('邮箱账号:') password_label = QLabel('邮箱密码:') test_label = QLabel('测试收件人:') email_test_button = QPushButton('发送测试邮件') email_test_button.clicked.connect(self.email_test_fun) email_input_button = QPushButton('保存邮箱配置') email_input_button.clicked.connect(self.email_save) email_info_group = QGroupBox('邮箱配置') email_info_grid = QGridLayout() email_info_grid.addWidget(stmp_label,0,0) email_info_grid.addWidget(self.email_stmp,0,1) email_info_grid.addWidget(name_label,1,0) email_info_grid.addWidget(self.email_name,1,1) email_info_grid.addWidget(user_label,2,0) email_info_grid.addWidget(self.email_user,2,1) email_info_grid.addWidget(password_label,3,0) email_info_grid.addWidget(self.email_password,3,1) email_info_grid.addWidget(test_label,4,0) email_info_grid.addWidget(self.email_test,4,1) email_info_grid.addWidget(email_test_button,5,0) email_info_grid.addWidget(email_input_button,5,1) email_info_group.setLayout(email_info_grid) email_users_group = QGroupBox('收件人') email_users_label = QLabel('邮箱:') email_users_combobox_label = QLabel('邮箱列表:') email_users_input_button = QPushButton('添加') email_users_delete_button = QPushButton('删除') email_users_input_button.clicked.connect(self.email_users_save) email_users_delete_button.clicked.connect(self.email_users_delete) email_users_grid = QGridLayout() email_users_grid.addWidget(email_users_label,0,0) email_users_grid.addWidget(self.email_users,0,1) email_users_grid.addWidget(email_users_input_button,0,2) email_users_grid.addWidget(email_users_combobox_label,1,0) email_users_grid.addWidget(self.email_suers_combobox,1,1) email_users_grid.addWidget(email_users_delete_button,1,2) email_users_group.setLayout(email_users_grid) hbox = QHBoxLayout() hbox.addWidget(email_info_group) hbox.addWidget(email_users_group) self.setLayout(hbox) #检查邮箱信息 def check_info(self): if self.email_stmp.text().strip() == '' or self.email_user.text().strip() == '' or self.email_name.text().strip() == '' or self.email_password.text().strip() == '': QMessageBox.warning(self,'提示','SMTP服务器,地区/单位,邮箱账号,邮箱密码\n不能为空.') return 1 return 0 #格式化 def _format_addr(self,s): name, addr = parseaddr(s) return formataddr((Header(name, 'utf-8').encode(), addr)) #邮件测试按钮 def email_test_fun(self): if self.check_info() == 1: return if self.email_test.text().strip() == '': QMessageBox.warning(self,'提示','请先输入测试收件人.') return try: msg = MIMEText('测试邮件.', 'plain', 'utf-8') msg['From'] = self._format_addr('%s<%s>'%(self.email_name.text().strip(),self.email_user.text().strip())) msg['To'] = ','.join([self.email_test.text().strip()]) msg['Subject'] = Header('测试邮件', 'utf-8').encode() server = smtplib.SMTP(self.email_stmp.text().strip(), 25) server.set_debuglevel(1) server.login(self.email_user.text().strip(), self.email_password.text().strip()) server.sendmail(self.email_user.text().strip(), [self.email_test.text().strip()], msg.as_string()) server.quit() QMessageBox.warning(self,'成功','邮件已发送,请查收.') except Exception as error: print(repr(error)) QMessageBox.warning(self,'错误','邮件发送失败.') #邮件信息保存 def email_save(self): if self.check_info() == 1: return self.dir_email['stmp'] = self.email_stmp.text().strip() self.dir_email['name'] = self.email_name.text().strip() self.dir_email['user'] = self.email_user.text().strip() self.dir_email['password'] = self.email_password.text().strip() with open('.//DATA//EMAILinfo.pik','wb') as email_file: pickle.dump(self.dir_email,email_file) QMessageBox.about(self,'提示','邮件信息保存成功.') #初始化邮件信息 def initEmail(self): try: if os.path.exists('.//DATA//EMAILinfo.pik'): with open('.//DATA//EMAILinfo.pik','rb') as e_file: self.dir_email = pickle.load(e_file) self.email_user.setText(self.dir_email['user']) self.email_password.setText(self.dir_email['password']) self.email_name.setText(self.dir_email['name']) self.email_stmp.setText(self.dir_email['stmp']) if os.path.exists('.//DATA//EMAILlist.pik'): with open('.//DATA//EMAILlist.pik','rb') as file: self.list_users = pickle.load(file) x = 0 for line in self.list_users: self.email_suers_combobox.insertItem(x, line) x = x + 1 except Exception as error: return #保存用户 def email_users_save(self): if self.email_users.text().strip() == '': QMessageBox.warning(self,'提示','请先输入邮件账号.') return for line in self.list_users: if line == self.email_users.text().strip(): QMessageBox.warning(self,'提示','用户已存在.') return self.email_suers_combobox.insertItem(len(self.list_users),self.email_users.text().strip()) self.list_users.append(self.email_users.text().strip()) with open('.//DATA//EMAILlist.pik','wb') as file: pickle.dump(self.list_users,file) self.email_users.setText('') #删除用户 def email_users_delete(self): if self.email_suers_combobox.currentText() == '': QMessageBox.about(self,'提示','没有可删除的收件人.') return x = 0 for line in self.list_users: if line == self.email_suers_combobox.currentText(): del self.list_users[x] self.email_suers_combobox.removeItem(x) break x = x + 1 with open('.//DATA//EMAILlist.pik','wb') as file: pickle.dump(self.list_users,file)
邮件
邮箱
提示
测试
信息
收件人
用户
账号
成功
单位
地区
密码
服务器
服务
输入
配置
按钮
格式
错误
检查
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广东猪兼强互联网科技有限公司
哈尔滨大商圈互联网科技有限公司
互联网佳科技有限公司
互联网科技与金融科技
朗涯互联网科技
剑昆互联网络科技有限公司临桂
字节跳动和互联网科技
武汉健翔互联网络科技有限公司
昭通互联网科技选哪家
特约风豹互联网科技为什么扣费
为客找房互联网科技公司怎么样
领航科技大厦互联网公司
卡尔迅互联网科技有限公司
郑州欣桑互联网科技有限公司
上海万顺科技互联网有限公司招聘
同城互联网络科技
中国互联网公司的科技投入
广西泛欧互联网科技有限公司
安徽九吞吴互联网科技有限公司
银川新华互联网科技学校招聘
科技互联网企业
互联网金融监管科技数据
互联网电商科技
河南真二互联网科技有限公司
以房互联网科技
宜安科技 互联网金融
互联网系的金融科技公司
互联网还是高科技吗
恒生互联网科技指数跳水
互联网科技实习生岗位