发邮件自动回复本机IP——python版本
2016-04-27 10:04
399 查看
这几天在写爬虫,有时候在宿舍需要远程登陆到实验室的主机上对代码进行一些微调,但是因为动态ip经常不知道实验室主机的IP是多少,因此产生了写这个小工具的想法。
工作原理描述: 首先需要一个专用的邮箱,该工具每隔2分钟查询有没有新邮件。当用户向该邮箱发送邮件查询ip时,该工具接收邮件并获取本机IP,并将该IP发送给用户。
思路很清晰,需要解决的问题很明确 1) 接收邮件 2) 发送邮件 3) 获取IP 4) 设置开机启动
让我们开始Geek之旅 o(*≧▽≦)ツ
备用邮箱设置
接收邮件
发送邮件
获取本机IP
代码
设置开机启动项
运行结果
http://download.csdn.net/detail/wds2006sdo/9503976
首先我们需要将该python项目打包成exe,在参考了下面两篇博客(博客1、博客2)后采用PyInstaller包进行打包。
安装好Pyinstaller后进入项目所在目录,运行
pyinstaller -F -w Main.py
这里Main.py替换成你的项目入口,这些参数可以上pyinstaller官网上查。
为生成的exe文件创建一个快捷方式,将该快捷方式放入
C:\Users\XXX\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
目录中,其中XXX是你的用户名,这样就可以实现开机启动了!
第二天早上8:26 CPU占用率为0 内存占用为7.6MB 磁盘读写和网络都为0
可以看出来其实该工具占用的资源并不多
下一步还想添加截图发送的功能,还有邮件重启爬虫的功能,应该都不难,如果有最新消息一定通知大家!!
工作原理描述: 首先需要一个专用的邮箱,该工具每隔2分钟查询有没有新邮件。当用户向该邮箱发送邮件查询ip时,该工具接收邮件并获取本机IP,并将该IP发送给用户。
思路很清晰,需要解决的问题很明确 1) 接收邮件 2) 发送邮件 3) 获取IP 4) 设置开机启动
让我们开始Geek之旅 o(*≧▽≦)ツ
备用邮箱设置
接收邮件
发送邮件
获取本机IP
代码
设置开机启动项
运行结果
备用邮箱设置
我们需要准备一个备用的邮箱,我选择的是126的邮箱,邮箱要开启POP3与IMAP服务,如下图接收邮件
接收邮件需要 imaplib 包,目前来说我们只需要解析出邮件发送方、发送日期以及发送标题即可,不需要解析邮件内容,解析代码如下所示:def get_mail(self): imapServer = imaplib.IMAP4(self.receive_mail_host, self.port) imapServer.login(self.account, self.password) # 获取最近的一份邮件 resp, items = imapServer.select('INBOX') resp, mailData = imapServer.fetch(items[0], "(RFC822)") msg = email.message_from_string(mailData[0][1]) # 获取邮件基本信息 ls = msg["From"].split(' ') address = ls[1][1:-1] subject = email.Header.decode_header(msg["Subject"]) sub = self.my_unicode(subject[0][0], subject[0][1]) imapServer.close() # Message —— 邮件信息类 mail_info = Message(address,sub.encode('utf-8'),msg['Date'],'') return mail_info
发送邮件
发送邮件需要 smtplib 与 email 这两个包, send_info是邮件信息类Message的一个实例,里面包括接收方的邮件地址,邮件的标题subject,邮件正文detail_msg。代码如下所示:def send_mail(self,send_info, type = 'text'): # 构建邮件 msg = MIMEText(send_info.detail_msg,'html','utf-8') msg['Subject'] = send_info.subject msg['From'] = self.send_email_from msg['To'] = send_info.address # 发送邮件 smtp = smtplib.SMTP() smtp.connect(self.send_mail_host) smtp.login(self.account, self.password) smtp.sendmail(self.account, [send_info.address], msg.as_string()) smtp.quit()
获取本机IP
本机IP可以通过 socket包获得。代码如下所示:def get_ip(): #获取本机电脑名 myname = socket.getfqdn(socket.gethostname()) #获取本机ip myaddr = socket.gethostbyname(myname) return myaddr
代码
代码我已经放到了CSDN的资源中,大家可以下载下来共同学习!http://download.csdn.net/detail/wds2006sdo/9503976
设置开机启动项
我的系统为win10,开机启动项非常简单。首先我们需要将该python项目打包成exe,在参考了下面两篇博客(博客1、博客2)后采用PyInstaller包进行打包。
安装好Pyinstaller后进入项目所在目录,运行
pyinstaller -F -w Main.py
这里Main.py替换成你的项目入口,这些参数可以上pyinstaller官网上查。
为生成的exe文件创建一个快捷方式,将该快捷方式放入
C:\Users\XXX\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
目录中,其中XXX是你的用户名,这样就可以实现开机启动了!
运行结果
功能测试
今天早上在食堂我利用手机微信发送邮件给我的监听邮箱,过了一会就收到了回信,如下图所示:资源消耗测试
前一天晚上12:23时CPU占用率为0 内存占用为8 磁盘读写和网络都为0第二天早上8:26 CPU占用率为0 内存占用为7.6MB 磁盘读写和网络都为0
可以看出来其实该工具占用的资源并不多
总结及未来工作目标
做一下总结吧,虽然已有一些应用能直接用手机远程操控电脑,但终究是要记密码等信息,还要经常开着,而且不能根据我们的要求深度定制,因此我这个小工具还是很不错的 o( ̄▽ ̄)ブ !!下一步还想添加截图发送的功能,还有邮件重启爬虫的功能,应该都不难,如果有最新消息一定通知大家!!
相关文章推荐
- Python利用前序和中序遍历结果重建二叉树的方法
- 递归实现二分法查找----python
- 学python 对以后运维的工作很重要吗
- python绘制折线图示例
- Python实现二维有序数组查找的方法
- python学习2
- 《python+opencv学习》一、Gui Features in Opencv(2)Matplotlib显示图片
- python安装numpy模块
- Python 基础 —— pylab
- Python数组遍历的简单实现方法小结
- numpy 辨异(一) —— reshape 与 resize
- Python的“二维”字典 (two-dimension dictionary)定义与实现方法
- python实现欧拉计划第十一题
- Python单链表简单实现代码
- 21天学通Python笔记(一)
- python使用matplotlib绘图
- 使用Python分析谷歌浏览器Chrome的网页浏览历史记录
- windows下python开发环境搭建(python+pip+aptana studio)
- windows下安装xgboost numpy scipy scikit-learn matplotlib
- python-json模块简单使用