python註冊全局熱鍵_截圖_發郵件帶附件

最近考試,視頻考試,爲了那啥,作了個腳本,廢話很少說,直接上代碼:服務器

# -*- coding: utf-8 -*----

import ctypes
import ctypes.wintypes
import win32con
from threading import Thread
import time
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
from PIL import ImageGrab


class HotKey(Thread):
    def run(self) -> None:
        # 註冊全局熱鍵
        keyAlt = 0x0001
        keyCtrl = 0x0002
        keyF3 = 0x72
        ret = ctypes.WinDLL("user32.dll").RegisterHotKey(None, 4001, keyCtrl | keyAlt, keyF3)
        if ret == 0:
            print("熱鍵註冊失敗!")
        else:
            print("熱鍵註冊成功!")
        msg = ctypes.wintypes.MSG()
        while True:
            if ctypes.windll.user32.GetMessageA(ctypes.byref(msg), None, 0, 0) != 0:
                if msg.message == win32con.WM_HOTKEY and msg.wParam == 4001:
                    # 第三方 SMTP 服務
                    mail_host = "smtp.qq.com"  # 設置服務器
                    # 用戶名
                    mail_user = "1363534266"
                    # 口令(注意這個口令不是QQ郵箱密碼,登陸QQ郵箱,設置-賬戶-生成受權碼)
                    mail_pass = "zjsuwdsaqwswqsaxghej"
                    sender = '1363534266@qq.com'
                    # 接收郵件,可設置爲你的QQ郵箱或者其餘郵箱
                    receivers = ['1304168777@qq.com']

                    # 截屏保存圖片
                    pic = ImageGrab.grab()
                    pic_name = time.strftime("%Y_%m_%d_%H_%M_%S", time.localtime()) + ".jpg"
                    pic.save(pic_name)

                    # 建立一個帶附件的實例
                    message = MIMEMultipart()
                    message['From'] = Header("LDC", 'utf-8')
                    message['To'] = Header("李康", 'utf-8')
                    # 郵件標題
                    subject = pic_name
                    message['Subject'] = Header(subject, 'utf-8')
                    # 郵件正文內容
                    message.attach(MIMEText('Hello World!', 'plain', 'utf-8'))

                    # 構造附件1 傳送當前目錄下的 1.jpg 文件
                    att1 = MIMEText(open(pic_name, 'rb').read(), 'base64', 'utf-8')
                    att1["Content-Type"] = 'application/octet-stream'
                    # 這裏的filename能夠任意寫,寫什麼名字,郵件中顯示什麼名字
                    att1["Content-Disposition"] = 'attachment; filename="1.jpg"'
                    message.attach(att1)

                    try:
                        server = smtplib.SMTP()
                        # 25 爲 SMTP 端口號
                        server.connect(mail_host, 25)
                        server.login(mail_user, mail_pass)
                        server.sendmail(sender, receivers, message.as_string())
                        print("LDC:郵件發送成功!")
                    except smtplib.SMTPException:
                        print("Error: 沒法發送郵件!")
                ctypes.windll.user32.TranslateMessage(ctypes.byref(msg))
                ctypes.windll.user32.DispatchMessageA(ctypes.byref(msg))


if __name__ == '__main__':
    hot_key = HotKey()
    hot_key.start()
相關文章
相關標籤/搜索