在J2ME平台上构建你的邮件程序
/* 为mainlist添加Command */
mainList.addCommand(cmOK);
mainList.addCommand(cmExit);
/* MailMIDlet实现了CommandListener接口,可以作为监听器 */
mainList.setCommandListener(this);
……
}
通过AccountForm(源文件ui/AccountForm.java),用户可以添加和修改邮件账户,如图3。
Figure 3a Figure 3b
AccountForm包含了6个TextField,分别显示邮件账户的6个属性。account为账户名,也是账户的唯一标识,不可重名。address为邮件的地址,如bill@ms.com。 user, password是在邮件服务商注册的用户名和密码。pop3, smtp是pop3服务器和smtp服务器的名字或地址。
private void setContent(MailAccount macc)
{
account = new TextField("Account: ", "", 20, TextField.ANY);
address = new TextField("Address; ", "", 40, TextField.EMAILADDR);
user = new TextField("User Name: ", "", 20, TextField.ANY);
password = new TextField("Password: ", "", 20, TextField.PASSWORD);
pop3 = new TextField("POP3 Server: ", "", 20, TextField.ANY);
smtp = new TextField("SMTP Server: ", "", 20, TextField.ANY);
if (macc != null)
{
account.setString(macc.accountName);
address.setString(macc.address);
user.setString(macc.username);
password.setString(macc.password);
pop3.setString(macc.POP3Server);
smtp.setString(macc.SMTPServer);
}
append(account);
append(address);
append(user);
append(password);
append(pop3);
append(smtp);
}
其它页面与AccountForm类似,在此不再赘述,请大家参照源代码和MIDP API的文档。
4. 账户的管理
邮件账户的创建,修改,删除都涉及到对数据记录的存取。MIDP提供了一种叫做记录管理系统(Record Management System)的机制来存储和访问数据。
javax.microedition.rms.RecordStore提供了一些API来操作这个系统。静态方法openRecordStore用来打开或创建一个RecordStore对象。方法addRecord, getRecord, deleteRecord, setRecord分别用来添加,访问,删除或修改RecordStore对象中的记录。
utility/DBOperator.java中封装了这些方法,从而实现添加,修改,删除邮件账户的操作。以添加帐户为例,下面的addRecord方法用来向RecordStore中添加一个记录,同时把这个记录所表示的邮件账户加到一个accounts中,accounts是一个Vecotr,用来存储系统中当前的账户。参数str包含了账户的所有信息,如账户名,地址,用户名,密码,pop3,smtp等,它们之间用空格隔开。
public void addRecord(String str)
{
int id;
byte[] rec = str.getBytes();
String record = str;
try
{
/* 向RecordStore中添加记录 */
id = rs.addRecord(rec, 0 , rec.length);
/* 同时把帐户添加到accounts向量中 */
MailAccount mailacc = MailAccount.createMailAccountFromString(id, str);
accounts.addElement(mailacc);
}
catch(RecordStoreException rse)
{
rse.printStackTrace();
}
}
5. MIDlet和Servlet的网络连接
MIDP的网络API在包javax.microedition.io中定义,其中HttpConnection提供了对HTTP协议的支持。
在文件utility/Networker.java中通过调用这些网络API实现了接收当前信箱中邮件列表setMessageList,接受某一邮件的内容receiveMessage,发送邮件sendMessage等功能。以sendMessage为例。
public void sendMessage(final String url, final String formData)//send a message
{
/* 创建新的进程 */
Thread t = new Thread()
{
public void run()
{
HttpConnection http = null;
byte[] data = fo
上一页 [1] [2] [3] [4] [5] [6] 下一页
进入问吧