Javamail is very troublesome to receive emails. Make a lot of judgments, such as the Chinese characters of attachments and the storage of attachments. This code is not complete. For reference only. /** * Store the recipient in the system. * * @ Param sess * @ Param PMM * @ Return */ Private Boolean storereceivemail (Session sess, platmessagemailset PMM) throws exception { Store store = NULL; Pop3folder folder = NULL; Long size = 0; Try { Urlname url = new urlname ("POP3", PMM. getpop3 (), 110, "", PMM. GetUserName (), PMM. GetPassword ()); Javax. Mail. Session S = javax. Mail. session. getdefainstance instance (system. getproperties (), null ); Store = S. getstore (URL ); // If (Folder = NULL) throw new exception ("no default folder "); // If it is an inbox Store. Connect (); Folder = (pop3folder) store. getfolder ("inbox "); If (Folder = NULL) throw new exception ("No POP3 inbox "); // Open the inbox in read-only mode Folder. Open (Folder. read_write ); // Get the Folder Information and obtain the mail list Fetchprofile profile = new fetchprofile (); Profile. Add (uidfolder. fetchprofileitem. UID ); Profile. Add (fetchprofile. item. envelope ); Message [] msgs = folder. getmessages (); Folder. Fetch (msgs, profile ); For (INT msgnum = 0; msgnum <msgs. length; msgnum ++ ){ Message message = (MSGs [msgnum]); If (! Message. getflags (). Contains (flags. Flag. Seen )){ Platmessage PM = new platmessage (); PM. setreceiver (PMM. getowner ()); PM. setrec_email (PMM. getmailaddr ()); PM. setsend_date (message. getsentdate ()); PM. setfolder ("inbox "); PM. setmsg_tag (2 ); PM. setcreate_date (new date ()); PM. setistag (0 ); PM. setacctag (0 ); /// // Save the email // Get the email address String text = ""; String from = (internetaddress) message. getfrom () [0]). getpersonal (); // Internetaddress IA = new internetaddress (from ); If (from = NULL) from = (internetaddress) message. getfrom () [0]). getaddress (); PM. setsender (from ); // Obtain the topic String subject = message. getsubject (); PM. setmsg_title (subject ); System. Out. println ("received email, from:" + from + ". Topic: "+ subject ); // Obtain the information object Part messagepart = message; Object content = messagepart. getcontent (); String acc_id = ""; System. Out. println ("content" + content ); If (content instanceof string ){ // Attachment TEXT = string. valueof (content ); System. Out. println ("here" + text ); } Else if (content instanceof multipart ){ Multipart MP = (multipart) content ); For (int K = 0; k <MP. getcount (); k ++ ){ Bodypart BP = mp. getbodypart (k ); Object T = bp. getcontent (); If (T instanceof string ){ TEXT = (string. valueof (t )); System. Out. println ("here 1" + text ); } Else if (T instanceof inputstream ){ String physical = uuidhex. getuuidhex (); Filecontrol fc = new filecontrol (); FC. setmyfile (new file (message_acc_path + "\" + Physical )); FC. createfile (); FC. writefile (BP. getinputstream ()); Platmsgaccessary PMA = new platmsgaccessary (); PMA. setfile_name (stringutil. getstring (mailutil. decodetext (BP. getfilename (), "unknown file name ")); PMA. setphysical (physical ); PMA. setfile_size (BP. getsize ()); Sess. Save (PMA ); Acc_id + = physical + "| "; System. Out. println ("received attachment, name:" + mailutil. decodetext (BP. getfilename () + ". Size: "+ bp. getsize ()); Size + = bp. getsize (); PM. setacctag (1 ); } } } PM. setacc_id (acc_id ); /** // Obtain the content type String contenttype = messagepart. getcontenttype (); // If the email content is plain text or HTML, print the information String context = ""; If (contenttype. startswith ("text/plain") | Contenttype. startswith ("text/html ")){ Inputstream is = messagepart. getinputstream (); Bufferedreader reader = new bufferedreader (New inputstreamreader (is )); String thisline = reader. Readline (); Context + = thisline; While (thisline! = NULL ){ Thisline = reader. Readline (); Context + = thisline; } Size + = context. Length (); } **/ PM. setmsg_size (message. getsize ()); PM. setmsg_sys ("sseip "); // Pm. setmsg_text (context ); Sess. Save (PM ); Sess. Flush (); System. Out. println ("email body:" + text ); Savemessagetext (sess, PM. getmsg_id (), text );// If (PMM. getdeltag () = 1 ){ Message. setflag (flags. Flag. Deleted, true ); } Else { Message. setflag (flags. Flag. Seen, true ); } } // Folder. Expunge (); //////////////////////////////////////// End } Return true; } Catch (exception ex ){ Throw ex; } Finally { If (folder! = NULL ){ Folder. Close (true ); } Store. Close (); } } |