如何用java实现使用电子邮件控制你的电脑
上两天看到一篇文章,用python实现电子邮件控制电脑的有趣的小程序
但是苦于自己没接触过python于是想到能不能用java实现,于是写了个java版本的
一开始想用socket连接邮件服务器的,但是比较麻烦,于是找了个易用的方法,使用javamail
一、学会使用javamail
首先我们得实现用java实现收发邮件的功能,通过查了资料,我们需要学习javamail,Javamail开发需要用到以下两个jar包
下载地址:点我呀
将上面两个jar包导入到javaproject中就能愉快的使用java收发电子邮件了,网上这种教程很多,视频也有不少,我就附两个吧:
Java 发送邮件
JavaMail API 核心类
二、实现思路:(我们使用的是IMAP协议)
1.连接邮件服务器,我们必须去遍历所有邮件,找到那一份我们要找的,就是查找来自指定邮箱的新邮件
2.找到指定邮件,获取出该邮件的subject赋给变量,然后将该邮件设置为已读
3.调用java控制windows系统的函数,然后传入subject控制命令就行了。
遇到的问题:
1、如何随时的都能获取新邮件呢?于是我们想到了多线程,于是我用了一个线程死循环不断遍历邮件列表,有指定新邮件就立马接受到(但是在线程控制方面还存在一些问题)
2、有时候连接邮件服务器会超时,但是继续等待又会连上(暂时未解决)
三、代码测试:(以新浪邮箱为例)
首先我们得确定新浪邮箱的一些配置
测试程序:
运行可能会报连接服务器异常
由于在多线程中执行,自己会重新连接服务器
成功的例子:发送一封主题为 notepad的邮件,会打开记事本,如下图
由于初学javamail和多线程,此程序尚不完善,今后学习中继续改善,我觉得他们的python版的很屌啊,还得学习,抽空看看python版的实现原理
程序源代码下载:
可执行jar包下载地址:
可执行jar包运行方法:
有java环境就能双击打开(编译版本jdk1.8.20)
要是看程序的打印信息,可以将jar包放到桌面:
也是可以运行的
如何用java实现使用电子邮件控制你的电脑的更多相关文章
- 如何用java控制你的电脑?
用java控制你的电脑 java,是一门强大的语言,强大的地方在于有很多类,我们可以直接的使用.而java.awt.Robot就很有意思了,顾名思义robot机器人,怎样一个机器法,如:控制鼠标方法: ...
- Spring进阶—如何用Java代码实现邮件发送(一)
相关文章: <Spring进阶—如何用Java代码实现邮件发送(二)> 在一些项目里面如进销存系统,对一些库存不足发出预警提示消息,招聘网站注册用户验证email地址等都需要用到邮件发送技 ...
- 如何用Java编写一段代码引发内存泄露
本文来自StackOverflow问答网站的一个热门讨论:如何用Java编写一段会发生内存泄露的代码. Q:刚才我参加了面试,面试官问我如何写出会发生内存泄露的Java代码.这个问题我一点思路都没有, ...
- Java中的流程控制(三)
关于Java中的流程控制 关于Java中的流程控制 4.do while语句 do while语句的功能和while语句差不多,只不过它是在执行完第一次循环后才检测条件表达式的值,这意味着包含在大括号 ...
- Java中的流程控制(二)
关于Java程序的流程控制(二) 关于Java程序的流程控制(二) 3.switch选择语句 switch语句用于将一个表达式的值同许多其他值比较,并按比较结果选择下面该执行哪些语句. switch( ...
- Java中的流程控制(一)
程序的流程控制(一) 关于Java程序的流程控制(一) 从结构化程序设计角度出发,程序有三种结构: 顺序结构 选择结构 循环结构 1.顺序结构 就是程序从上到下一行行执行,中间没有判断和跳转. 2.i ...
- 第三节:带你详解Java的操作符,控制流程以及数组
前言 大家好,给大家带来带你详解Java的操作符,控制流程以及数组的概述,希望你们喜欢 操作符 算数操作符 一般的 +,-,*,/,还有两个自增 自减 ,以及一个取模 % 操作符. 这里的操作算法,一 ...
- Java 基本语法---流程控制
Java 基本语法---流程控制 0. 概述 三大流程控制语句:顺序.选择.循环. 选择结构: if 结构,if - else结构: 多重 if - else 语句 ; 嵌套 if - else 语句 ...
- Java 訪问权限控制:你真的了解 protected keyword吗?
摘要: 在一个类的内部,其成员(包含成员变量和成员方法)是否能被其它类所訪问,取决于该成员的修饰词:而一个类是否能被其它类所訪问,取决于该类的修饰词.Java的类成员訪问权限修饰词有四类:privat ...
随机推荐
- Delphi XE5 常用功具与下载
1.Delphi XE5 正式版 http://altd.embarcadero.com/download/radstudio/xe5/delphicbuilder_xe5_win.iso http: ...
- [OC Foundation框架 - 6] NSMutableString
NSString是不可变的 NSMutableString是可变字符串 1.初始化 2.串联字符串 3.替换字符串 4.插入字符串 5.删除字符串 #pragma mark buffer st ...
- jquery-ui 之draggable详解
举一个例子: <div class="box"> <div id="draggable"> <p>Drag me aroun ...
- CSS文本与文字
-255之间 14.2 CSS中的文字属性 属性名称 属性值 说明 font-style norma ...
- Python FTP多线程爆破脚本
初学python, 自己编写了个FTP多线爆破小脚本代码很丑= = #!usr/bin/env python #!coding=utf-8 __author__='zhengjim' from ftp ...
- JavaScript Source Map 详解
源码地址: http://www.ruanyifeng.com/blog/2013/01/javascript_source_map.html 上周,jQuery 1.9发布. 这是2.0版之前的最后 ...
- ListView Video
com.baidu.frontia.FrontiaApplication ListView Video <item name="android:windowBackground&quo ...
- 图解iPhone开发新手教程
如今的智能手机越来越风行了,当中尤以Apple的iPhone和Google的Android系统最为流行,这里我将向大家介绍iPhone开发的基础知识.为了便于刚開始学习的人尽快上手,我尽量以代码加截图 ...
- MySQL 性能监控 4 大指标
[编者按]本文作者为 John Matson,主要介绍 mysql 性能监控应该关注的 4 大指标. 文章系国内 ITOM 管理平台 OneAPM 编译呈现. MySQL 是什么? MySQL ...
- mac10.7安装xcode3.2.5和xcode4.2过程和方法
关于mac10.8安装xcoce3.2.5 五国或者不能成功的原因,看文章的最后部分. 大致浏览一下下面的内容,其实基本都是一样的,第一篇说明多个版本的xcode如何共存,后面的讲述如何安装xcode ...