欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于PyQt5制作一個(gè)群發(fā)郵件工具

 更新時(shí)間:2022年04月08日 08:09:39   作者:Python 集中營  
這篇文章主要介紹了如何利用Python中的PyQt5模塊,制作一個(gè)簡易的郵件群發(fā)小工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下

演示示例使用QQ郵箱發(fā)送郵件,先獲取自己的QQ郵箱的授權(quán)碼。因?yàn)楹竺姘l(fā)送郵件時(shí)需要使用自己的授權(quán)碼作為郵箱的密碼登錄郵箱最后達(dá)到發(fā)送郵件的目的。

將UI處理的相關(guān)的界面包導(dǎo)入進(jìn)來

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

# 應(yīng)用操作相關(guān)的庫
import sys

# 郵件發(fā)送相關(guān)的庫
import smtplib
from email.mime.text import MIMEText

為了不和郵件發(fā)送的UI界面主線程產(chǎn)生沖突,使用QThread子線程的方式制作郵件發(fā)送。

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("郵件信息讀取完成!")

        # 發(fā)件人郵箱
        send_email_name = '1342929047@qq.com'
        # 發(fā)件人授權(quán)碼
        passwd = 'fjyjqlzxprzihcii'

        self.trigger.emit(send_email_name)
        self.trigger.emit("發(fā)件人信息初始化完成!")
        # 收件人郵箱
        msg_to = recipient_text.split(';')
        self.trigger.emit(recipient_text)
        self.trigger.emit("收件人信息初始化完成!")
        print(msg_to)
        # 設(shè)置郵件
        msg = MIMEText(current_text)
        msg['subject'] = email_subject_text
        # 設(shè)置發(fā)件人
        msg['From'] = '一匹來自北方的狼'
        # 設(shè)置收件人
        msg['To'] = ';'.join(msg_to)
        # 連接服務(wù)器
        smtp = smtplib.SMTP_SSL('smtp.qq.com', 465)
        self.trigger.emit("服務(wù)器連接成功!")
        # 登錄郵箱
        smtp.login(send_email_name, passwd)
        self.trigger.emit("郵箱登錄成功!")
        # 發(fā)送郵件
        smtp.sendmail(send_email_name, msg_to, msg.as_string())
        self.trigger.emit("郵件發(fā)送成功!")
        self.finished.emit(True)

下面是主頁面的UI布局及信號(hào)量的代碼塊。

class StmpEmail(QWidget):
    def __init__(self):
        super(StmpEmail, self).__init__()
        self.init_ui()

    def init_ui(self):

        self.setWindowTitle('批量郵件工具  公眾號(hào):[Python 集中營]')
        self.setWindowIcon(QIcon('郵件.ico'))
        self.setFixedSize(500, 400)

        hbox = QHBoxLayout()
        self.send_btn = QPushButton()
        self.send_btn.setText('發(fā)送')
        self.send_btn.clicked.connect(self.send_btn_click)

        self.brower = QTextBrowser()
        self.brower.setFont(QFont('宋體', 8))
        self.brower.setReadOnly(True)
        self.brower.setPlaceholderText('執(zhí)行進(jìn)度顯示區(qū)域...')
        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):
        '''
        槽函數(shù):向文本瀏覽器中寫入內(nèi)容
        :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函數(shù)將頁面布局加入主體循環(huán)即可。

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = StmpEmail()
    main.show()
    sys.exit(app.exec_())

以上就是郵件發(fā)送的主要代碼塊了,copy到自己的開發(fā)工具中運(yùn)行即可(前提是你已經(jīng)安裝好了需要的python模塊)。

最終效果圖

到此這篇關(guān)于基于PyQt5制作一個(gè)群發(fā)郵件工具的文章就介紹到這了,更多相關(guān)PyQt5群發(fā)郵件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python聚類算法解決方案(rest接口/mpp數(shù)據(jù)庫/json數(shù)據(jù)/下載圖片及數(shù)據(jù))

    python聚類算法解決方案(rest接口/mpp數(shù)據(jù)庫/json數(shù)據(jù)/下載圖片及數(shù)據(jù))

    這篇文章主要介紹了python聚類算法解決方案(rest接口/mpp數(shù)據(jù)庫/json數(shù)據(jù)/下載圖片及數(shù)據(jù)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python實(shí)現(xiàn)高分辨率圖像導(dǎo)航的代碼

    Python實(shí)現(xiàn)高分辨率圖像導(dǎo)航的代碼

    高分辨率圖像導(dǎo)航是一種技術(shù),它允許用戶在大型圖像中進(jìn)行導(dǎo)航和瀏覽,而無需加載整個(gè)圖像到內(nèi)存中,在本文中,我們將使用30行Python代碼實(shí)現(xiàn)這一功能,我們將使用Python的圖像處理庫和計(jì)算機(jī)視覺庫來加載圖像數(shù)據(jù)并生成高分辨率圖像導(dǎo)航
    2024-03-03
  • 教你利用python實(shí)現(xiàn)企業(yè)微信發(fā)送消息

    教你利用python實(shí)現(xiàn)企業(yè)微信發(fā)送消息

    今天帶大家來練習(xí)python實(shí)戰(zhàn),文中對(duì)利用python實(shí)現(xiàn)企業(yè)微信發(fā)送消息作了詳細(xì)的圖文解說及代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴很有幫助,需要的朋友可以參考下
    2021-05-05
  • OpenCV?NAO機(jī)器人輔助撿球丟球流程分析

    OpenCV?NAO機(jī)器人輔助撿球丟球流程分析

    這篇文章主要介紹了OpenCV?NAO機(jī)器人輔助撿球丟球,本項(xiàng)目使用NAO機(jī)器人識(shí)別球并撿起,然后將其扔到指定位置,主要涉及圖像的獲取、濾波、目標(biāo)物體定位和NAO機(jī)器人的運(yùn)動(dòng)控制,需要的朋友可以參考下
    2022-05-05
  • python批量壓縮圖像的完整步驟

    python批量壓縮圖像的完整步驟

    本文分享的內(nèi)容來源于一次做項(xiàng)目的經(jīng)驗(yàn),也就是從那之后才體會(huì)到了python強(qiáng)大的文件批處理能力,這篇文章主要給大家介紹了關(guān)于python批量壓縮圖像的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • Python3中的真除和Floor除法用法分析

    Python3中的真除和Floor除法用法分析

    這篇文章主要介紹了Python3中的真除和Floor除法用法,結(jié)合實(shí)例形式分析了真除與Floor除法的區(qū)別與使用技巧,需要的朋友可以參考下
    2016-03-03
  • Python爬豆瓣電影實(shí)例

    Python爬豆瓣電影實(shí)例

    本篇文章給大家通過Python爬豆瓣電影實(shí)例對(duì)Python爬蟲更深入的講解,有興趣的學(xué)習(xí)下。
    2018-02-02
  • DataFrame窗口函數(shù)rolling()的用法

    DataFrame窗口函數(shù)rolling()的用法

    這篇文章主要介紹了DataFrame窗口函數(shù)rolling()的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 詳解Python pygame安裝過程筆記

    詳解Python pygame安裝過程筆記

    本篇文章主要介紹了詳解Python pygame安裝過程筆記。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • Python讀取YUV文件,并顯示的方法

    Python讀取YUV文件,并顯示的方法

    今天小編就為大家分享一篇Python讀取YUV文件,并顯示的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12

最新評(píng)論