Message类
在Java Mail 中Message类是所有电子邮件的的超类它的定义如下:
public abstract class javax.mail.Message implements javax.mail.Part
1.标准的Java Mail API中有一个Message的子类:MimeMessage,它可用于电子邮件和Usenet新闻消息。除此之外,其他厂商可以自由扩展Message来满足自身需求。
Message类主要声明了定义大多数消息公共属性的抽象获取和设置方法。这些属性包括
(1)消息地址
(2)消息接收方
(3)消息主题和主体等
可以将这些属性视为包含消息的信封。
2.Message还实现了Part接口。Part接口用于处理消息的主体
创建消息
Message类有三个构造函数可以创建消息:
protected Message();
protected Message(Folder folder,int messageNumber);
protected Message(Session);
其中,第二个方法的参数说明如下:
folder - 包含文件夹
msgnum - 在这个文件夹中消息的序列号
回复消息
如果已经有了一个Message对象,要创建一个新的Message对象,可以使用:
public abstract Message reply(boolean replyAll)throws MessagingException
此方法用加了前缀“Re:”的相同主题和最初消息的发送方地址创建一个新的Message对象。如果参数为true,
消息会寻址到最初消息的所有接收方。消息的内容为空。如果要引用初始消息,就必须自己来完成这个工作。
From地址
下面四个方法用来获得和设置消息的“From”
public abstract Address[] getFrom()
throws MessagingException
public abstract void setFrom()
throws MessagingException
public abstract void addFrom(Address[] addresses)
throws MessagingException
public abstract void addFrom(Address[] addresses)
throws MessagingException
Reply-to地址
有些消息包含一个Reply-to,指示回复消息应当发送到与发送消息不同的地址。有两个方法可以设置和获得这些地址:
public Address[] getReplyTo()
throws MessagingException
Get the addresses to which replies should be directed.
public void setReplyTo(Address[] addresses)
throws MessagingException
Set the addresses to which replies should be directed
接收方地址
消息的发送方一般只存在于From:首部中,而消息的接收方却分为To,Cc,Bcc三个字段。在Java Mail中,这三个字段分别是:
Message.RecipientType.TO
Message.RecipientType.CC
Message.RecipientType.BCC
获取Message的接收方地址有两个方法:
public abstract Address[] getRecipients(Message.RecipientType type)
throws MessagingException
public Address[] getAllRecipients()
throws MessagingException
消息主题
主要有两个方法:
public abstract void setSubject(String subject)
throws MessagingException
public abstract String getSubject()
throws MessagingException
消息日期
消息还有发送、接收日期:
public abstract Date getSentDate()
throws MessagingException
public abstract void setSentDate(Date date)
throws MessagingException
public abstract Date getReceivedDate()
throws MessagingException
package com.mail;
import java.util.Date;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
public class HeaderClient {
/**
* @param args
*/
public static void main(String[] args) {
try {
Properties props=new Properties();
props.setProperty("mail.transport.protocol", "pop3");
props.setProperty("mail.host", "pop3.sina.com");
Session session=Session.getDefaultInstance(props,
new Authenticator()
{
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication("yananlemon@sina.com","111111");
}
} );
//连接服务器,并打开文件夹
Store store=session.getStore("pop3");
store.connect("pop3.sina.com", "yananlemon@sina.com", "1111111");
Folder folder=store.getFolder("INBOX");
if(folder==null){
System.out.println("Folder not found!");
System.exit(1);
}
folder.open(Folder.READ_ONLY);
//从服务器获取消息
Message[] ms=folder.getMessages();
for(int i=0;i<ms.length;i++){
System.out.println("--------------Message"+(i+1)+"---------------");
String from =InternetAddress.toString(ms[i].getFrom());
if(from!=null){
System.out.println("消息来自:"+from);
}
String to=InternetAddress.toString(ms[i].getRecipients(Message.RecipientType.TO));
if(to!=null){
System.out.println("消息去往:"+to);
}
String replyTo=InternetAddress.toString(ms[i].getReplyTo());
if(replyTo!=null){
System.out.println("消息回复给:"+replyTo);
}
String cc=InternetAddress.toString(ms[i].getRecipients(Message.RecipientType.CC));
if(cc!=null){
System.out.println("消息抄送:"+cc);
}
Date sent=ms[i].getSentDate();
if(sent!=null){
System.out.println("消息发送时间::"+sent);
}
String subject=ms[i].getSubject();
if(subject!=null){
System.out.println("消息主题:"+subject);
}
Date received=ms[i].getReceivedDate();
if(received!=null){
System.out.println("消息接收时间:"+received);
}
System.out.println();
}
folder.close(false);
store.close();
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
下面是输出: