无聊的Java(一)
这是我准备的一系列JAVA开发文章的开篇,包括题记,项目背景介绍等信息,感兴趣话可以看看,我会争取每天都写一篇关于这个的文章的,敬请大家关注。
题记
我终于决定要写点东西了,因为现在实在是很无聊。虽然现在对于要写什么还不是很清晰,为什么写也不是很明朗,但我还是决定要写点东西了,而不仅仅是记一些很无聊的琐碎,虽然日志更多应该记自己的琐碎。
写的内容目前看来就是java了,这个学习使用了2年半的东西(更多的应该是学习,不停的甚至有些盲目的看书,各种各样的java相关的),但是写这些东西绝对不是为显示自己的实力(老实说,我也没有什么java实力),只是因为我很无聊,想用java这个工具去做一些自己的东西,是完全符合自己心意和要求。这里写的一些程序或者称他们为项目也好的东西,只是我在这一段无聊的时间内一些无聊的想法,仅此而已。
另一个写这个东西的目的,这完全不是我的初衷,而是现在我想到的:是不是完整的记录我从有一个想法到动手实践,之后再到去完善自己的想法,再去动手实践,最后做出满足我要求和想法的东西的过程。呵呵,也许这时候,你会下意识的想:“下面这哥们是不是要说让我学习借鉴他这个”。恩不是,我这么做只是一种记录,主要是对我自己的,也许会多你有用了,那就更好了。
啰嗦了这么多,你一定有点烦了,也一定有点头晕了,是的,我都有点头晕(我的思路一贯的很不清晰),那么下面我们进入正题:
我的想法
是关于电子邮件的,在用了一段时间的OE和Foxmail之后,感觉都不是很好,他们都有点占用资源了,尤其是OE,启动时候竟然能把我的机子整死,况且每次从装系统,他们都回从我的126和Gmail重新下载几千封以前邮件(我个人比较懒,从来没有整理过我的邮箱),这让我极其的恶心和头疼;还有就是我很少用他们去发信,更多的时候我只是用他们来提醒我新邮件到了。
上面说了这么多,总结起来就一点:我现在需要的仅仅是一个邮件提醒程序,其他功能不想要。恩,这就确定了这个程序主要功能:EmailNotify。我们下面的东西都回围绕这个去实施。
具体实施(8-30)
以后的章节都将会以日期作标记。
Java处理Mail的API就是JavaMail了,当然还有其他api,这里我采用了javamail,去http://java.sun.com/products/javamail/下载了javamail-1.4和jaf-1.0.2(JavaBeans Activation Framework,http://java.sun.com/products/javabeans/glasgow/jaf.html下载),添加进入的你的Classpath,或者简单把mail.jar,activation.jar放到你的jre/lib/ext目录下面,这样环境就搭建起来了。
接着我翻看《java network programming》3rd editon english version 里面最后一章(最近老在图书馆的英文阅览室,前面的日志中记载过)讲述的JAVAMailApi,我现在只需要接受邮件,于是便看了第三节,它上面大致讲了以下一些内容:
- 接受邮件的步骤:
- 创建你要建立的连接的属性
- 创建你要建连接的Authenticator
- 获得Session通过Session.getDefaultInstance( )
- 获得一个Store通过session的getStore( )方法
- 连接上store
- 通过store的getFolder()方法获得邮箱的INBOX
- 打开INBOX文件夹
- 如果需要可以重复上面的上一步骤来打开INBOX里面的你需要的那个文件夹
- 通过Message对象数组的形式来获得文件夹里面的Message,使用folder的getMessages( )方法
- 按照你想得方式,去处理你得到的Messages对象
- 关闭folder
- 关闭store
- 一个展示上面步骤地程序
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import java.io.*;
public class POP3Client {
public static void main(String[] args) {
Properties props = new Properties( ); //连接的属性
String host = “utopia.poly.edu”; //邮件主机名,126的邮箱:pop3.126.com
String username = “eharold”;//用户名
String password = “mypassword”;//密码
String provider = “pop3″; //类型
try {
Session session = Session.getDefaultInstance(props, null);//获得Session
Store store = session.getStore(provider);//获得stroe
store.connect(host, username, password); //连接
Folder inbox = store.getFolder(”INBOX”); //获得folder
if (inbox == null) {
System.out.println(”No INBOX”);
System.exit(1);
}
inbox.open(Folder.READ_ONLY);//打开ifolder
Message[] messages = inbox.getMessages( ); //获得messages
/*下面就是你自己的处理,作者默认使用的writeto,就是将信息一股脑的输出到控制台,不推荐你用的,否则如果地信件像我一样,1k左右,会死的比较残的。*/
for (int i = 0; i < messages.length; i++) {
System.out.println("------------ Message " + (i+1) + " ------------");
messages[i].writeTo(System.out);
}
inbox.close(false);//关闭folder
store.close( ); //关闭store
}
catch (Exception ex) {
ex.printStackTrace( );
}
}
}
en,现在把上面的用户名密码服务器之类的信息更改为你自己的,之后呢把wrtieto那一句改为输出信件的数量,编译执行就可以得到你信箱的信件数量了。我用126的邮箱测试了一下,正确。再用gmail测试一下,不过这次却出了问题,一看报错的信息,一头雾水,这时赶紧跑到gmail站去查看相关的参数,发现gmail是使用得ssl连接,这可怎么办了?以前没有使用过相关的api阿,只有用google了,搜索:gmail javamail 很快就找到解决问题的方法。
怎么解决,下次再写。。
Tags: 无聊的java
你的文章写的真不错,清晰明了,就喜欢看这样的文章,
x人x心 是哪个成语?实在想不出来
X人X心似乎是老罗语录里面的,老罗好像说的是在龌龊的人眼里什么东西都是龌龊的,
现在X人x心似乎是:在色人的眼里什么东西都是带荤的。
en ,空间速度太慢了,改天要换个速度快点的空间了。M$的live writer用起来还不错,只是它写出来的文章再用wordpress编辑,就会比较残了。根本看不懂!呵呵