/** * 可以在props下设置认证信息,协议和端口信息,超时等信息,这样在store.connect的时候可以根 * 据props里是否设置了认证信息来选择不带参数的connect()或者如下有参数的connect(...)方法 * store.connect(user, password); store.connect(host, user, password); */ Properties props = System.getProperties(); props.setProperty("mail.imap.host""mail.**.**.cn"); props.setProperty("mail.imap.port""143"); 具体端口信息由邮件提供商确定 props.setProperty("mail.imap.connectiontimeout""5000"); props.setProperty("mail.imap.timeout""5000");
Code Body:
Properties props = System.getproperties (); Store store =NULL;//used to store the folder in the mail, you can simply use the Javax.mail.Folder type,//If only the number of unread messages is taken, the folder type will suffice.Imapfolder Inbox =NULL;Try{Session session = Session.getdefaultinstance (props,NULL);//If using POP3 protocol here IMAP is changed to POP3, if use SSL connection here should use Imapsstore = Session.getstore ("IMAP"); Store.connect ("mail.**.**.cn","User","PWD"); SYSTEM.OUT.PRINTLN (store); Inbox = (Imapfolder) Store.getfolder ("Inbox");//Get Inbox object //If you need to set the message to read when the number of messages is obtained, you need to use read_write here, otherwise read_only canInbox.open (Folder.read_write);//message messages[] = Inbox.getmessages ();//Get All messages //Establish search conditions Flagterm, here flagterm inherit from Searchterm, that is to say, in addition to get unread mail //pieces of conditions there are many other conditions also inherit the Searchterm conditional class, like according to sender, subject search, etc. //There are complex logical searches like: // //Searchterm orterm = new Orterm ( //New Fromstringterm (from), //New SubjectTerm (subject) // ); // //Can search the Internet searchterm get moreFlagterm ft =NewFlagterm (NewFlags (Flags.Flag.SEEN),false);//false represents unread, true represents read /** * Flag types are listed below * Flags.Flag.ANSWERED mail reply flag to identify whether the message has been replied to. * Flags.Flag.DELETED Message Delete tag to identify whether the message needs to be deleted. * Flags.Flag.DRAFT Draft message flag to identify whether the message is a draft. * Flags.Flag.FLAGGED Indicates whether the message is a message in the Recycle Bin. * Flags.Flag.RECENT new message flag to indicate whether the message is a new message. * Flags.Flag.SEEN message reading flag to identify whether the message has been read. * Flags.Flag.USER whether the underlying system supports user-defined markup, read-only. */Message messages[] = inbox.search (ft);//Get message based on set conditions //Traversal of the obtained message array for information for(Message message:messages) {//Returns the message type object by default because I need to get messageid so I need to do a mandatory //Convert to Imapmessage typeImapmessage imes = (imapmessage) message;//I need to get the messages are plain text, so in this simple to make a judgment, not plain text directly skipped. //If you need to read a message that is not pinned, you need to use Message.getcontenttype () to get the message //body type, then further processing according to type //If "Text/plain" or "text/html" is returned as plain text, if "multipart/*" then the body can be //can also include information such as pictures if(! (Message.getcontent ()instanceofString))Continue; map<string, string> map =NewHashmap<string, string> (); Map.put ("Content", (String) message.getcontent ()); Map.put ("title", Message.getsubject ());The //imapmessage type object can get MessageID and UID, both of which are differentiated MessageID is //Mail unique identification, not limited to the current mail system, UID is the current mail system unique identification, //Get MessageID need to read the message, UID does not need to read the message so faster. Map.put ("MessageId", Imes.getmessageid ()); Mailinfolist.add (map);//Save the information I want to get map listMeslist.add (message);//Save the message list I will set as read}//Set the message I have just taken as read if(Meslist.size () >0) {message[] Savedmailmessage =NewMessage[meslist.size ()]; Meslist.toarray (Savedmailmessage); Inbox.setflags (Savedmailmessage,NewFlags (Flags.Flag.SEEN),true); }}Catch(Nosuchproviderexception e) {E.printstacktrace ();}Catch(Messagingexception e) {E.printstacktrace ();}Catch(IOException e) {//TODO auto-generated catch blockE.printstacktrace ();}finally{Try{if(Inbox! =NULL) {Inbox.close (false); Inbox =NULL; }if(Store! =NULL) {store.close (); store =NULL; } }Catch(Messagingexception e) {//TODO auto-generated catch blockE.printstacktrace (); }}
All about JAVA javamail POP3 and IMAP read unread messages, etc.