首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

怎样得到未读邮件的个数!小弟我只要得到未读邮件的个数就行了!如何弄

2012-01-24 
怎样得到未读邮件的个数!我只要得到未读邮件的个数就行了!怎么弄!我在javamail的demo中找到了这个程序我直

怎样得到未读邮件的个数!我只要得到未读邮件的个数就行了!怎么弄!
我在javamail的demo中找到了这个程序我直接抄了下来可是运行有错!
package   testThinking;
import   java.util.*;
import   java.io.*;
import   javax.mail.*;
import   javax.mail.internet.*;
import   javax.activation.*;

/*
  *   Demo   app   that   exercises   the   Message   interfaces.
  *   Access   message   given   its   UID.
  *   Show   information   about   and   contents   of   messages.
  *
  *   @author   John   Mani
  *   @author   Bill   Shannon
  */

public   class   MailTest   {

        static   String   protocol= "pop3 ";
        static   String   host   =   "....... ";
        static   String   user   =   "test ";
        static   String   password   =   "test ";
        static   String   mbox   =   "INBOX ";
        static   String   url   =   null;
        static   boolean   verbose   =   false;

        public   static   void   main(String   argv[])   {
long   uid   =   -1;
int   optind;

for   (optind   =   0;   optind   <   argv.length;   optind++)   {
        if   (argv[optind].equals( "-T "))   {
protocol   =   argv[++optind];
        }   else   if   (argv[optind].equals( "-H "))   {
host   =   argv[++optind];
        }   else   if   (argv[optind].equals( "-U "))   {
user   =   argv[++optind];
        }   else   if   (argv[optind].equals( "-P "))   {
password   =   argv[++optind];
        }   else   if   (argv[optind].equals( "-v "))   {
verbose   =   true;
        }   else   if   (argv[optind].equals( "-f "))   {
mbox   =   argv[++optind];
        }   else   if   (argv[optind].equals( "-L "))   {
url   =   argv[++optind];
        }   else   if   (argv[optind].equals( "-- "))   {
optind++;
break;
        }   else   if   (argv[optind].startsWith( "- "))   {
System.out.println( "Usage:   uidmsgshow   [-L   url]   [-T   protocol]   [-H   host]   [-U   user]   [-P   password]   [-f   mailbox]   [uid]   [-v] ");
System.exit(1);
        }   else   {
break;
        }
}

                try   {
        if   (optind   <   argv.length)
                  uid   =   Long.parseLong(argv[optind]);

        //   Get   a   Properties   object


        Properties   props   =   System.getProperties();

        //   Get   a   Session   object
        Session   session   =   Session.getInstance(props,   null);
        //   session.setDebug(true);

        //   Get   a   Store   object
        Store   store   =   null;
        if   (url   !=   null)   {
URLName   urln   =   new   URLName(url);
store   =   session.getStore(urln);
store.connect();
        }   else   {
if   (protocol   !=   null)
        store   =   session.getStore(protocol);
else
        store   =   session.getStore();

//   Connect
if   (host   !=   null   ||   user   !=   null   ||   password   !=   null)
        store.connect(host,   user,   password);
else
        store.connect();
        }
       

        //   Open   the   Folder

        Folder   folder   =   store.getDefaultFolder();
        if   (folder   ==   null)   {
                System.out.println( "No   default   folder ");
                System.exit(1);
        }

        folder   =   folder.getFolder(mbox);
        if   (!folder.exists())   {
                System.out.println(mbox   +   "     does   not   exist ");
                System.exit(1);
        }

        if   (!(folder   instanceof   UIDFolder))   {
                System.out.println(
        "This   Provider   or   this   folder   does   not   support   UIDs ");
                System.exit(1);
        }

        UIDFolder   ufolder   =   (UIDFolder)folder;

        folder.open(Folder.READ_WRITE);
        int   totalMessages   =   folder.getMessageCount();

        if   (totalMessages   ==   0)   {
System.out.println( "Empty   folder ");
folder.close(false);
store.close();
System.exit(1);
        }

        if   (verbose)   {
int   newMessages   =   folder.getNewMessageCount();
System.out.println( "Total   messages   =   "   +   totalMessages);
System.out.println( "New   messages   =   "   +   newMessages);
System.out.println( "------------------------------- ");


        }

        if   (uid   ==   -1)   {
//   Attributes   &   Flags   for   ALL   messages   ..
Message[]   msgs   =  
ufolder.getMessagesByUID(1,   UIDFolder.LASTUID);

//   Use   a   suitable   FetchProfile
FetchProfile   fp   =   new   FetchProfile();
fp.add(FetchProfile.Item.ENVELOPE);
fp.add(FetchProfile.Item.FLAGS);
fp.add( "X-Mailer ");
folder.fetch(msgs,   fp);

for   (int   i   =   0;   i   <   msgs.length;   i++)   {
        System.out.println( "-------------------------- ");
        System.out.println( "MESSAGE   UID   # "   +  
ufolder.getUID(msgs[i])   +   ": ");
        dumpEnvelope(msgs[i]);
        //   dumpPart(msgs[i]);
}
        }   else   {
System.out.println( "Getting   message   UID:   "   +   uid);
Message   m   =   ufolder.getMessageByUID(uid);
if   (m   !=   null)
        dumpPart(m);
else
        System.out.println(
"This   Message   does   not   exist   on   this   folder ");
        }

        folder.close(false);
        store.close();
}   catch   (Exception   ex)   {
        System.out.println( "Oops,   got   exception!   "   +   ex.getMessage());
        ex.printStackTrace();
}
System.exit(1);
        }

        public   static   void   dumpPart(Part   p)   throws   Exception   {
if   (p   instanceof   Message)
        dumpEnvelope((Message)p);

/*   Dump   input   stream
InputStream   is   =   new   BufferedInputStream(p.getInputStream());
int   c;
while   ((c   =   is.read())   !=   -1)
        System.out.write(c);
*/

System.out.println( "CONTENT-TYPE:   "   +   p.getContentType());

Object   o   =   p.getContent();
if   (o   instanceof   String)   {
        System.out.println( "This   is   a   String ");
        System.out.println( "--------------------------- ");
        System.out.println((String)o);
}   else   if   (o   instanceof   Multipart)   {
        System.out.println( "This   is   a   Multipart ");
        System.out.println( "--------------------------- ");
        Multipart   mp   =   (Multipart)o;
        int   count   =   mp.getCount();
        for   (int   i   =   0;   i   <   count;   i++)
dumpPart(mp.getBodyPart(i));
}   else   if   (o   instanceof   Message)   {


        System.out.println( "This   is   a   Nested   Message ");
        System.out.println( "--------------------------- ");
        dumpPart((Part)o);
}   else   if   (o   instanceof   InputStream)   {
        System.out.println( "This   is   just   an   input   stream ");
        System.out.println( "--------------------------- ");
        InputStream   is   =   (InputStream)o;
        int   c;
        while   ((c   =   is.read())   !=   -1)
System.out.write(c);
}
        }

        public   static   void   dumpEnvelope(Message   m)   throws   Exception   {
System.out.println( "This   is   the   message   envelope ");
System.out.println( "--------------------------- ");
Address[]   a;
//   FROM  
if   ((a   =   m.getFrom())   !=   null)   {
        for   (int   j   =   0;   j   <   a.length;   j++)
System.out.println( "FROM:   "   +   a[j].toString());
}

//   TO
if   ((a   =   m.getRecipients(Message.RecipientType.TO))   !=   null)   {
        for   (int   j   =   0;   j   <   a.length;   j++)
System.out.println( "TO:   "   +   a[j].toString());
}

//   SUBJECT
System.out.println( "SUBJECT:   "   +   m.getSubject());

//   DATE
Date   d   =   m.getSentDate();
System.out.println( "SendDate:   "   +
        (d   !=   null   ?   d.toString()   :   "UNKNOWN "));

//   SIZE
System.out.println( "Size:   "   +   m.getSize());

//   FLAGS:
Flags   flags   =   m.getFlags();
StringBuffer   sb   =   new   StringBuffer();
Flags.Flag[]   sf   =   flags.getSystemFlags();   //   get   the   system   flags

boolean   first   =   true;
for   (int   i   =   0;   i   <   sf.length;   i++)   {
        String   s;
        Flags.Flag   f   =   sf[i];
        if   (f   ==   Flags.Flag.ANSWERED)
s   =   "\\Answered ";
        else   if   (f   ==   Flags.Flag.DELETED)
s   =   "\\Deleted ";
        else   if   (f   ==   Flags.Flag.DRAFT)
s   =   "\\Draft ";
        else   if   (f   ==   Flags.Flag.FLAGGED)
s   =   "\\Flagged ";
        else   if   (f   ==   Flags.Flag.RECENT)
s   =   "\\Recent ";
        else   if   (f   ==   Flags.Flag.SEEN)
s   =   "\\Seen ";
        else


continue;//   skip   it
        if   (first)
first   =   false;
        else
sb.append( '   ');
        sb.append(s);
}

String[]   uf   =   flags.getUserFlags();   //   get   the   user   flag   strings
for   (int   i   =   0;   i   <   uf.length;   i++)   {
        if   (first)
first   =   false;
        else
sb.append( '   ');
        sb.append(uf[i]);
}
System.out.println( "FLAGS   =   "   +   sb.toString());

//   X-MAILER
String[]   hdrs   =   m.getHeader( "X-Mailer ");
if   (hdrs   !=   null)
        System.out.println( "X-Mailer:   "   +   hdrs[0]);
else
        System.out.println( "X-Mailer   NOT   available ");
        }
}
报这个错!应该怎么解决This   Provider   or   this   folder   does   not   support   UIDs

[解决办法]
帮顶
[解决办法]
邮件在数据表中不是有个 "阅读状态 "字段吗?你只要统计该表中 "阅读状态 "为 "未读 "标识的记录数就可以了呀
[解决办法]
1、自己维护一个数据表判断。
2、用IMAP协议

热点排行