在JavaMail的基础上构建自己的Email Channel
基础知识
Email入门
不说太多,至于什么是Email,Email给我们带来什么好处,也就不唠叨了。但是先得看下Email的数据结构,因为我们需要根据领域逻辑,进行面向对象的设计。
现在通过webmail和outlook发的邮件一般都是MIME邮件,如上图,但不同的client也可能稍微有所不同。
邮件是由邮件头和邮件体组成的,每个体部分由头域、空行、体组成。但几个值得注意的header
Content-Type
每个邮件体都有个content type。说明该邮件体的类型,编码,boundary等。包括:主类型,如Multipart,Text,Image;子类型:如plain,html,alternative;参数:如charset,boundary等。
Content-Disposition
我们可以通过参数来辨别某个邮件体是否是附件,附件的类型,附件的名字等。
Content-Id
Content id是邮件体的唯一标识,可以被其他邮件体所引用。我们发的HTML邮件里常常可以引用附件中的图片,就是通过CID引用的。
Content-Transfer-Encoding
转换邮件编码格式用于传输。有些传输协议对数据格式有所限制。
IMAP4 和 POP3
IMAP4优于 POP3
· IMAP可预取email的元数据信息:header,根据header做过滤。
· 可以实现直接连接到服务器上进行邮件的筛选,我把它称为select操作。
JavaMail
· Transport发邮件:SMTPTransport
· Store收邮件:IMAPStore, POP3Store
JavaMail为MIME邮件设计的数据结构:
参考文章:
http://www.javaworld.com/javaworld/jw-10-2001/jw-1026-javamail.html?page=2
http://en.wikipedia.org/wiki/MIME
http://www.freesoft.org/CIE/RFC/1521/
<<面向对象的邮件解析器的设计与实现>>