用python实现PC屏幕截图自动发送邮箱源代码实现原理

代码功能介绍

代码实现了一个屏幕截图应用程序,可以定时截取屏幕,并将截图通过电子邮件发送给指定的收件人。以下是代码的主要功能:

通过使用pyautogui库来进行屏幕截图。
使用smtplib库来发送电子邮件,以将截图发送给收件人。
使用tkinter库创建一个简单的图形用户界面(GUI),用于配置应用程序的设置。
通过使用logging库来记录日志,将日志保存到文件中。
使用configparser库来读取和保存应用程序的配置设置。
实现了开机自动启动功能,可以将应用程序设置为开机自动启动。
实现了隐藏和显示应用程序窗口的功能。
收件邮箱默认等于发件邮箱

此外,代码还实现了一些其他功能,如数据加密和解密、删除已发送的截图文件等。

应用程序在为用户提供一个便捷的方式来定时截图并将截图发送给指定的收件人,适用于需要定期截图的监控、远程监视等场景。用户可以通过图形界面设置截图的间隔时间、截图的次数、发件人和收件人的电子邮件地址等。

import smtplib
import time
import pyautogui
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
from email.mime.text import MIMEText
import logging
import configparser
import os
import sys
import ctypes
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64
 
import tkinter as tk
from tkinter import ttk
import datetime
import threading
import winreg
import glob
 
KEY = b'MySuperSecretKey'
 
def encrypt_data(data):
    cipher = AES.new(KEY, AES.MODE_CBC)
    ct_bytes = cipher.encrypt(pad(data.encode('utf-8'), AES.block_size))
    iv = base64.b64encode(cipher.iv).decode('utf-8')
    ct = base64.b64encode(ct_bytes).decode('utf-8')
    return iv + ct
 
def decrypt_data(data):
    try:
        iv = base64.b64decode(data[:24])
        ct = base64.b64decode(data[24:])
        cipher = AES.new(KEY, AES.MODE_CBC, iv=iv)
        pt = unpad(cipher.decrypt(ct), AES.block_size)
        return pt.decode('utf-8')
    except:
        return "Decryption Error!"
 
class ScreenshotApp:    
    def __init__(self):
        self.root = tk.Tk()
        self.root.title("Screen")
 
        self.config = configparser.ConfigParser()
        self.config_file = os.path.join(os.path.dirname(os.path.abspath(sys.argv[0])), "config.ini") 
         
        if not os.path.exists(self.config_file):
            self.create_default_config()
         
        self.config.read(self.config_file)  # 读取配置文件
         
        self.sender_email_label = ttk.Label(self.root, text="发件邮箱:")
        self.sender_email_label.grid(row=0, column=0, padx=5, pady=5)
        self.sender_email_entry = ttk.Entry(self.root)
        self.sender_email_entry.grid(row=0, column=1, padx=5, pady=5)
         
        self.sender_password_label = ttk.Label(self.root, text="发件邮箱密码:")
        self.sender_password_label.grid(row=1, column=0, padx=5, pady=5)
        self.sender_password_entry = ttk.Entry(self.root, show="*")
        self.sender_password_entry.grid(row=1, column=1, padx=5, pady=5)
         
        self.interval_label = ttk.Label(self.root, text="截图间隔时间:")
        self.interval_label.grid(row=2, column=0, padx=5, pady=5)
        self.interval_entry = ttk.Entry(self.root)
        self.interval_entry.grid(row=2, column=1, padx=5, pady=5)
         
        self.count_label = ttk.Label(self.root, text="发送截图数量:")
        self.count_label
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DNCS高级工程师

你的创作是我打赏的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值