操作消息
接收消息通知
FolderListener和StoreListener接口的实现允许你的应用程序接收消息通知.
|
public class MailTest implements FolderListener, StoreListener { ... }
|
增加一个监听者到消息Store
为了监听消息存储事件,例如同步,获取一个Store对象,并将一个StoreListener实例加给它.
|
try {
Store store = Session.waitForDefaultSession().getStore();
}
catch (NoSuchServiceException e) {
System.out.println(e.toString());
}
store.addStoreListener(this);
|
当消息以批处理的形式增加和删除时,StoreListener.batchOperation()的实现定义了应用程序的行为.例如,你的应用程序可能检查任何它引用的对象是否删除.
|
void batchOperation(StoreEvent e)
{
// Perform action when messages added or removed in batch operation.
}
|
增加一个监听者给文件夹
为了监听一个文件夹事件,例如将一个消息加入到一个特定的文件夹,为你想接收新消息通知的文件夹获取一个Folder对象.将一个FoldListener实例加到此文件夹对象.
|
Folder[] folders = store.list(Folder.INBOX);
Folder inbox = folders[0];
inbox.addFolderListener(this);
|
当文件夹事件发生时, 实现FolderListener.messagesAdded() 和FolderListener.messagesRemoved()完成操作.例如,你可实现这些方法维护任何引用你的应用程序必须指定的mail文件夹的一致性.
|
void messagesAdded(FolderEvent e) {
// Perform processing on added messages.
}
void messagesRemoved(FolderEvent e)
{
// Perform processing on removed messages.
}
|
接收一个消息的更多部分
缺省的,发送一个消息的第一部分(一般约2KB)到BlackBerry设备上.调用消息体部分上的hasMore()判断在服务器上是否有更多的数据.调用moreRequestSent()判断是否一个获取更多数据的请求已经发出.调用more()请求一个消息的更多部分.
|
if (( bp.hasMore())&&(! bp.moreRequestSent())
{
Transport.more(bp, true);
}
|
more()的第二个参数是一个Boolean值,它指定了是否仅获取消息体部分的下一部分(false),或者获取所有剩下的部分(true).
打开一个消息
获取消息存储以及包含消息的文件夹:
|
Store store = Session.waitForDefaultSession.getStore();
Folder folder = Store.getFolder("SampleFolder");
|
从文件夹获取消息对象.迭代数组,并获取信息,例如发送者,主题,显示给用户.
|
Message[] msgs = folder.getMessages();
|
当用户从列表中选择一个消息时,调用Message对象上的方法获取合适的字段以及消息体内容显示给用户.
|
Message msg = msgs[0]; // Retrieve the first message.
Address[] recipients = msg.getRecipients(Message.RecipientType.TO)
Date sent = msg.getSentDate();
Address from = msg.getFrom();
String subject = msg.getSubject();
Object o = msg.getContent();
// Verify that the message is not multipart.
if ( o instanceof String ) {
String body = (String)o;
}
//...
|
注:调用一个消息上的getBodyText()方法获取普通文本内容作为一个String.如果消息不包含普通文本,方法将返回null.