python开机自启动拍照并发送到邮箱(Windows)

最近突然想要干些什么,就把以前学的Python拿了出来玩一玩, 上网找了一些好玩的程序,发现有一篇文章写如何在Linux系统开机拍照并发送给邮箱, 就想着在windows上也实现一下.

首先分析一下流程: 开机自启动->拍照->发送邮件->退出

第一步:    配置windows下的python代码开机自启动

我搜索了好一阵子才找到一篇文章和此有关 

https://blog.csdn.net/wickedvalley/article/details/80099566

特此感谢此博主.

代码:

import win32api
import win32con

class AutoRun():
    def __init__(self):
        name = 'Test'  # 要添加的启动项名称
        AutoPath = 'D:\\GetImage.exe'  # 要添加的exe路径
        # 注册表项名
        KeyName = 'Software\\Microsoft\\Windows\\CurrentVersion\\Run'
        # 异常处理
        try:
            key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,  KeyName, 0,  win32con.KEY_ALL_ACCESS)
            win32api.RegSetValueEx(key, name, 0, win32con.REG_SZ, path)
            win32api.RegCloseKey(key)
        except:
            print('添加失败')
        print('添加成功!')
if __name__=='__main__':
    auto=AutoRun();    #引用启动项

第二步:    拍照:

此功能需要用到open-python的功能,我们在控制台中用pip安装一下opencv

pip install opencv-python

然后使用代码拍照:

import cv2

def GetPicture():                 #拍照
	cap = cv2.VideoCapture(0)
	ret,frame = cap.read()
	cv2.imwrite('D:\\person.jpg',frame)
	cap.release

此代码将会拍照并放置在D盘中

第三步:    发送邮件:

关于只用邮箱发送邮件的功能我也参考了以为博主:

https://www.cnblogs.com/zhongfengshan/p/9763366.html

特此感谢此博主, 各位可以参考他的关于发送邮件的文章.

关于邮箱的登录密码,由于算是第三方客户端,所有我们需要使用授权码,关于QQ邮箱的授权码,有链接:

https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256

 

下面贴上全部代码:

'''
本文件设计于获取开机后的照片
流程:复制到电脑后打开软件,然后会收到测试邮件,下次开机后将自动打开该软件,并获取照片
发送到指定邮箱
'''

import cv2
import smtplib
import sys
import os
import time
import win32api
import win32con
from email.mime.image import MIMEImage
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart


host = "smtp.qq.com"    #发服务器接口
port = 25               #端口号
sender = "xxxxxxxx@qq.com" #消息发送方
pwd = "xxxxxxxx"   #授权码
receiver = "xxxxxx@qq.com"  #消息接收方
exit_count = 5     #尝试联网次数
# path = os.getcwd()  #获取图片保存路径  返回当前进程的工作目录
path = "D:"       #文件路径

# def mkdir(path):                 #创建文件夹路径
# 	folder = os.path.exists(path)
# 	if folder:
# 		print ("Have Done")
# 	else:
# 		os.mkdir(path)
# 		print ("New Folder")

def GetPicture():                 #拍照
	cap = cv2.VideoCapture(0)
	ret,frame = cap.read()
	cv2.imwrite(path+'/person.jpg',frame)
	cap.release

def SetMsg():         #邮件格式设置
	msg = MIMEMultipart("mixed")
	msg['Subject'] = '电脑启动'  #标题
	msg['From'] = sender
	msg['To'] = receiver
	#邮件正文
	text = "您的电脑已开机!已经为你获取开机照片"
	text_plain = MIMEText(text,'plain','utf-8')      #正文转码
	msg.attach(text_plain)
	#构造图片链接
	SendImageFile = open(path+'/person.jpg','rb').read()
	image = MIMEImage(SendImageFile)
	#将收件人看见的附件照片名称改为people.png.
	image['Content-Disposition'] = 'attachment; filename = "people.png"'
	msg.attach(image)
	return msg.as_string()

def SendEmail(msg):			#发送邮件	
	smtp = smtplib.SMTP()
	smtp.connect(host)
	smtp.login(sender,pwd)
	smtp.sendmail(sender,receiver,msg)
	time.sleep(2)
	smtp.quit()

class AutoRun():             #添加开机启动项
    def __init__(self):
        name = 'Test'  # 要添加的项值名称
        AutoPath = path + '\\GetImage.exe'  # 要添加的exe路径
        # 注册表项名
        KeyName = 'Software\\Microsoft\\Windows\\CurrentVersion\\Run'
        # 异常处理
        try:
            key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,  KeyName, 0,  win32con.KEY_ALL_ACCESS)
            win32api.RegSetValueEx(key, name, 0, win32con.REG_SZ, AutoPath)
            win32api.RegCloseKey(key)
        except:
            print('添加失败')
        print('添加成功!')

# def IsLink():     #判断网络是否连通
# 	return os.system('ping -c 4 www.baidu.com')

# def main():       #主函数
# 	reconnect_times = 0
# 	# while IsLink():
# 	# 	time.sleep(10)
# 	# 	reconnect_times += 1
# 	# 	if reconnect_times == exit_count:
# 	# 		sys.exit()
# 	# time.sleep(10)
	# GetPicture()
	# msg = SetMsg()
	# SendEmail(msg)

if __name__ == '__main__':
	# mkdir(path)        #先设置路径
	auto = AutoRun()   #设置开机自启动
	GetPicture()       #拍照
	msg = SetMsg()	   #设置格式
	SendEmail(msg)	   #发送

也可以去我的Github上寻找我的代码:

https://github.com/shuanghan0922/Python/tree/master/GetImageToEmail

特此感谢为我提供支持的博主

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要使Python程序在开机时自动启动,你可以使用操作系统提供的自启动功能。下面是针对不同操作系统的一些常见方法: 对于Windows操作系统: 1. 将你的Python程序保存为一个扩展名为`.py`的文件。 2. 在Windows资源管理器中,按下`Win + R`键打开运行对话框,然后输入`shell:startup`并按回车键。这将打开Windows的启动文件夹。 3. 在启动文件夹中,创建一个快捷方式,指向你的Python脚本文件。 4. 将这个快捷方式拖动到启动文件夹中。 当你重新启动Windows时,你的Python程序将自动运行。 对于macOS操作系统: 1. 打开“系统偏好设置”并选择“用户与群组”。 2. 在左侧选择你的用户账户,然后点击右侧的“登录项”选项卡。 3. 点击“+”按钮添加一个新的登录项。 4. 在弹出的对话框中,浏览并选择你的Python脚本文件。 当你重新启动macOS时,你的Python程序将自动运行。 对于Linux操作系统: 1. 编辑 `~/.bashrc` 或 `~/.bash_profile` 文件,可以使用命令 `nano ~/.bashrc` 或 `nano ~/.bash_profile` 进行编辑。 2. 在文件的末尾添加以下命令: ``` python /path/to/your_script.py & ``` 其中`/path/to/your_script.py`是你的Python脚本文件的路径。 3. 保存并关闭文件。 当你重新启动Linux时,你的Python程序将自动运行。 请注意,这些方法都是在用户登录后运行Python程序。如果你希望在系统启动时即可运行,你可能需要查阅操作系统的相关文档或其他方法来设置自启动
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值