<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
演示範例使用QQ郵箱傳送郵件,先獲取自己的QQ郵箱的授權碼。因為後面傳送郵件時需要使用自己的授權碼作為郵箱的密碼登入郵箱最後達到傳送郵件的目的。
將UI處理的相關的介面包匯入進來
from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import * # 應用操作相關的庫 import sys # 郵件傳送相關的庫 import smtplib from email.mime.text import MIMEText
為了不和郵件傳送的UI介面主執行緒產生衝突,使用QThread子執行緒的方式製作郵件傳送。
class EmailWork(QThread): trigger = pyqtSignal(str) finished = pyqtSignal(bool) def __init__(self, parent=None): super(EmailWork, self).__init__(parent) self.parent = parent self.working = True def __del__(self): self.working = False self.wait() def run(self): email_subject_text = self.parent.email_subject_text.text().strip() recipient_text = self.parent.recipient_text.text().strip() current_text = self.parent.current_text.toPlainText().strip() print(email_subject_text) print(recipient_text) print(current_text) self.trigger.emit("郵件資訊讀取完成!") # 發件人郵箱 send_email_name = '1342929047@qq.com' # 發件人授權碼 passwd = 'fjyjqlzxprzihcii' self.trigger.emit(send_email_name) self.trigger.emit("發件人資訊初始化完成!") # 收件人郵箱 msg_to = recipient_text.split(';') self.trigger.emit(recipient_text) self.trigger.emit("收件人資訊初始化完成!") print(msg_to) # 設定郵件 msg = MIMEText(current_text) msg['subject'] = email_subject_text # 設定發件人 msg['From'] = '一匹來自北方的狼' # 設定收件人 msg['To'] = ';'.join(msg_to) # 連線伺服器 smtp = smtplib.SMTP_SSL('smtp.qq.com', 465) self.trigger.emit("伺服器連線成功!") # 登入郵箱 smtp.login(send_email_name, passwd) self.trigger.emit("郵箱登入成功!") # 傳送郵件 smtp.sendmail(send_email_name, msg_to, msg.as_string()) self.trigger.emit("郵件傳送成功!") self.finished.emit(True)
下面是主頁面的UI佈局及號誌的程式碼塊。
class StmpEmail(QWidget): def __init__(self): super(StmpEmail, self).__init__() self.init_ui() def init_ui(self): self.setWindowTitle('批次郵件工具 公眾號:[Python 集中營]') self.setWindowIcon(QIcon('郵件.ico')) self.setFixedSize(500, 400) hbox = QHBoxLayout() self.send_btn = QPushButton() self.send_btn.setText('傳送') self.send_btn.clicked.connect(self.send_btn_click) self.brower = QTextBrowser() self.brower.setFont(QFont('宋體', 8)) self.brower.setReadOnly(True) self.brower.setPlaceholderText('執行進度顯示區域...') self.brower.ensureCursorVisible() hbox.addWidget(self.send_btn) self.email_subject_text = QLineEdit() self.email_subject_text.setPlaceholderText('請輸入主題') self.recipient_text = QLineEdit() self.recipient_text.setPlaceholderText('請輸入收件人,範例:134047@qq.com;092837@163.com') self.current_text = QTextEdit() self.current_text.setPlaceholderText('請輸入郵件正文') self.thread_ = EmailWork(self) self.thread_.trigger.connect(self.update_log) self.thread_.finished.connect(self.finished) vbox = QVBoxLayout() vbox.addWidget(self.email_subject_text) vbox.addWidget(self.recipient_text) vbox.addWidget(self.current_text) vbox.addWidget(self.brower) vbox.addLayout(hbox) self.setLayout(vbox) def update_log(self, text): ''' 槽函數:向文字瀏覽器中寫入內容 :param text: :return: ''' cursor = self.brower.textCursor() cursor.movePosition(QTextCursor.End) self.brower.append(text) self.brower.setTextCursor(cursor) self.brower.ensureCursorVisible() def finished(self, finished): if finished is True: self.send_btn.setEnabled(True) def send_btn_click(self): self.send_btn.setEnabled(False) self.thread_.start()
最後,通過main函數將頁面佈局加入主體迴圈即可。
if __name__ == '__main__': app = QApplication(sys.argv) main = StmpEmail() main.show() sys.exit(app.exec_())
以上就是郵件傳送的主要程式碼塊了,copy到自己的開發工具中執行即可(前提是你已經安裝好了需要的python模組)。
最終效果圖
到此這篇關於基於PyQt5製作一個群發郵件工具的文章就介紹到這了,更多相關PyQt5群發郵件內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45