java查看邮件_用Java Mail API查看邮件

用Java Mail API查看邮件

作者:    文章来源:

发布日期:2007年02月14日

看过在jsp中调用javamail后发现里面只有发邮件,没有收看邮件,且在收看邮件时有个很麻烦的内码转换问题,所以写这篇文章出来给大家看看。如有错误请写信给我。

使用Java Mail API的方法,主要的操作过程为:

● 获取javax.mail.Session实例,并进而获得javax.mail.Store实例。

● 利用javax.mail.Store实例获得缺省收件箱(INBOX)javax.mail.Folder实例。

● 使用javax.mail.Folder对象提取新邮件,存储为javax.mail.Message对象数组。

● 创建javax.mail.FetchProfile以(潜在地)优化对特定邮件组成成分的提取。

这里的javax.mail.FetchProfile类提供邮件协议提供者可选参数,其目的是更有效地实现邮件组成成分的预提取。

一个例子:

private String getDisplayAddress(Address a) //转换RFC822为Unicode

{ String pers = null;

String addr = null;

if(a instanceof InternetAddress &&((pers=((InternetAddress)a).getPersonal())!=null))

addr=pers+" "+"";

else

addr = a.toString();

return addr;

}

%>

Session mailsession=Session.getInstance(System.getProperties(),null);

mailsession.setDebug(false);

Store store=mailsession.getStore(protocol);//protocol为连接协议,IMAP或是POP

store.connect(mailhost,-1,user,passwd);//mailhost主机,user为用户名,passwd为密码

Folder folder = store.getFolder("INBOX");

try

{ folder.open(Folder.READ_WRITE);}

catch (MessagingException ex)

{ folder.open(Folder.READ_ONLY);}

Message message[]=folder.getMessages();

FetchProfile fp=new FetchProfile();

fp.add(FetchProfile.Item.ENVELOPE);

fp.add(FetchProfile.Item.FLAGS);

fp.add("X-Mailer");

folder.fetch(message,fp);

int id=0,j=0;

for(int i=0;i

id=id*10+(request.getParameter("id").charAt(i)-48);

for(j=0;j

message[j].setFlag(Flags.Flag.SEEN,true);

out.println("

out.println("

");

out.println("

主题: "+message[j].getSubject()+" ");

String from=new String();

Address[] fr=message[j].getFrom();

if(fr!=null)

{ boolean tf=true;

for(int i=0;i

from=from+getDisplayAddress(fr);

}

out.println("

来自: "+from+" ");

out.println("

内容

");

Object o=message[j].getContent();

if (message[j].isMimeType("text/plain")) //若其Type为tex/plain就可直接读出了。

out.println((String)o+"

");

else if(message[j].isMimeType("multipart/*"))

{ Multipart mp=(Multipart)o;

Part part=mp.getBodyPart(0);

String msg=(String)part.getContent();

StringBuffer buf=new StringBuffer(msg.length()+6);

char ch=' ';

for(int i=0;i

{ ch=msg.charAt(i);

if(ch=='

')buf.append("
");

else buf.append(ch);

}

out.println(buf.toString());

}

else

out.println("现在还无法显示:"+message[j].getContentType());

out.println("

");

out.println("

folder.close(true);

store.close();

%>

在Folder对象中可以用getMessageCount()和getUnreadMessageCount()方法来取得总共有多少封信和共有多少封信未读。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值