python利用QQ邮箱远程控制电脑截屏,并且把截屏发送到指定邮箱

思路

电脑每隔一段时间查看指定邮箱中是否收到了新的邮件,若未收到,则不进行任何操作,若收到了,则判断发件人的身份,若发件人为合法的控制者,则解析发件人的邮件,执行解析结果,否则忽略该邮件

几个关键点:

1.直接利用PIL模块的ImageGrab.grab()函数对电脑进行截屏,然后通过邮件把电脑截屏发送到手机上。

2.邮件的查看(zmail 库实现)

3.邮件发送

import requests
import smtplib
import schedule
import time
from bs4 import BeautifulSoup
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.header import Header
from PIL import ImageGrab
#zmail库:可以用几行代码帮我们收取一封邮件
import zmail

account = '121942198@qq.com'
password = '' #写上QQ邮箱授权码
receiver = '76123708@qq.com'

#发送邮件
def send_email():
    mailhost='smtp.qq.com'
    qqmail = smtplib.SMTP_SSL(host='smtp.qq.com')
    qqmail.connect(mailhost,465)
    qqmail.login(account,password)

    # 以html格式构建邮件内容
    send_str = '''
    <html>
    <body>
    <center>下边是一张图片</center>
    <img src="cid:image1" alt="image1" align="center" width=100% >
    <center>上边是一张图片</center>
    </body>
    </html>
    '''

    # 构建message
    message = MIMEMultipart()
    # 添加邮件内容
    content = MIMEText(send_str, _subtype='html', _charset='utf8')
    message.attach(content)

    # 构建并添加图像对象
    img1 = MIMEImage(open('cut.jpg', 'rb').read(), _subtype='octet-stream')
    img1.add_header('Content-ID', 'image1')
    message.attach(img1)   

    # 构建并添加附件对象
    img = MIMEImage(open('cut.jpg', 'rb').read(), _subtype='octet-stream')
    img.add_header('Content-Disposition', 'attachment', filename='cut.jpg')
    message.attach(img)

    #定义邮件头信息
    # message['From'] = Header(u'SuperME <%s>'%account)
    h = Header('打伞小和尚', 'utf-8') #有中文得分2段处理
    h.append('<%s>'%account, 'ascii')
    message["From"] = h
    message['to'] = Header(u'DU <%s>'%receiver)
    message['Subject'] = Header('来自我的电脑截屏', 'utf-8')
    try:
        qqmail.sendmail(account, receiver, message.as_string())
        print ('邮件发送成功')
    except:
        print ('邮件发送失败')
    qqmail.quit()

# 打印欢迎信息
def print_info():
    print('*'*20 + 'Welcome' + '*'*20)
    print('[Function]: 邮件远程控制电脑系统')
    print('[Author]: DU')
    print('[Mail]: i@iamdu.com')
    print('*'*21 + 'Start' + '*'*21)

def job():

    #输入账号和密码 读取指定邮箱的最新邮件
    server=zmail.server(account,password)
    #获取最新的一封邮件
    mail=server.get_latest()
    #读取邮件
    # zmail.show(mail)
    #读取邮件的部分内容
    if mail['Subject'] =='截屏' and mail['From']=='"DU" <i@iamdu.com>':
        #电脑屏幕截屏
        img = ImageGrab.grab()
        img.save("cut.jpg")

        print('开始一次任务')
        send_email()
        print('任务完成')

print_info()
schedule.every(1).minutes.do(job)
while True:
    schedule.run_pending()
    time.sleep(1)

 

发表评论

邮箱地址不会被公开。 必填项已用*标注