JavaMail学习笔记2——JavaMail 发送邮件

来源:互联网 发布:joo yeon-seo胸 编辑:程序博客网 时间:2024/05/17 08:08

 

1.      准备环境:

(1).javaMail核心类mail.jar加入到classpath中。

(2).JAF框架核心类activation.jar加入到classpath中。

注意:上面是针对JavaSE的环境,如果是JavaEE环境则不需要,j2ee.jar中包含了上述两个依赖包,可以直接使用。

2.发送纯文本邮件:

(1).设置连接会话属性:

 

(2).创建邮件对象:

 

(3).设置邮件相关信息:

 

注意:a.收件人和发件人的邮箱地址如果是多个,字符串中用逗号“,”分隔即可。

b.收到邮件后显示的发件人地址是设置的setFrom值,而不是真正的发送邮箱。

c. Message.RecipientType类表示收件人的类型,是MimeMessage内部类Recipient类的一个内部类,它是Message中的一个静态类。该类中有如下三个常量:

TO:代表有健的主要接收者。

CC:代表有健的抄送接收者。

BCC:代表邮件的暗送接收者。

(4).发送邮件:

 

注意:在transport.connect中设置的用户名和密码是为了连接邮箱服务器,该用户名不一定是收到邮件的发件人,发件人以message.setFrom中设置的为准。

3. 发送HTML格式邮件:

和发送纯文本邮件类似,不同之处在于设置邮件内容部分,如:

 

4.      发送带附件的邮件:

发送带有附件的邮件的过程有些类似转发邮件,我们需要建立一个完整邮件的各个邮件体部分,在邮件内容文字后,增加一个具有DataHandler的附件而不是在转发邮件时那样复制第一个部分的DataHandler。发送带附件的邮件需要用到JAF框架的DataHandler

如果我们将文件作为附件发送:

a.      建立FileDataSource类型的对象作为附件数据源;如果从URL读取数据作为附件发送,那么将要建立URLDataSource类型的对象作为附件数据源。

b.      将这个数据源(FileDataSource或是URLDataSource)对象作为DataHandler类构造方法的参数传入,从而建立一个DataHandler对象作为数据源的DataHandler

c.      将这个DataHandler设置为邮件体部分的DataHandler。这样就完成了邮件体与附件之间的关联工作,下面的工作就是BodyPartsetFileName()方法设置附件名为原文件名。

d.      将两个邮件体放入到Multipart中,设置邮件内容为这个容器Multipart,发送邮件。

这里说明一下邮件的结构:

每个邮件是由多个部分组成,每个部分称为一个邮件体部分,是一个BodyPart类对象,对于MIME类型邮件来讲就是MimeBodyPart类对象。这些邮件体包含在成为Multipart的容器中对于MIME类型邮件来讲就是MimeMultiPart类对象。

 

和发送纯文本也发送HTML格式邮件类似,不同之处在于:

(1).创建附件内容对象:

 

(2).设置附件内容对象的数据源和DataHandler

 

(3). 创建附件对象:

 

(4).添加附件:

 

5.回复邮件

回复邮件的方法很简单:使用Message类的reply()方法,通过配置回复邮件的收件人地址和主题(如果没有提供主题的话,系统将默认将“Re:”作为邮件的主体),这里不需要设置任何的邮件内容,只要复制发信人或者reply-to到新的收件人。而reply()方法中的boolean参数表示是否将邮件回复给发送者(参数值为false),或是回复给所有人(参数值为true)。

补充一下,reply-to地址需要在发信时使用setReplyTo()方法设置。

 

6.转发邮件

转发邮件的过程不如前面的回复邮件那样简单,它将建立一个转发邮件,这并非一个方法就能做到。

在转发邮件时,我们建立一个文字邮件体部分和一个被转发的文字邮件体部分,然后将这两个邮件体放到一个Multipart中。说明一下,复制一个邮件内容到另一个邮件的方法是仅复制它的DataHandler(数据处理者)即可。这是由JAF定义的一个类,它提供了对邮件内容的操作命令的访问、管理了邮件内容操作,是不同的数据源和数据格式之间的一致性接口。

(1).创建转发邮件:

 

(2).设置转发邮件信息:

 

(3). 复制被转发邮件内容到转发邮件内容中

 

 

原创粉丝点击