Saturday, 15 February 2014

java - Download only the attachments from E-mails using JavaMail 1.4 -



java - Download only the attachments from E-mails using JavaMail 1.4 -

i have next code in effort download attachments emails , have next error "could not connect message store". anyone, help?

*error

run:

javax.mail.messagingexception: connect failed; nested exception is: javax.net.ssl.sslhandshakeexception: sun.security.validator.validatorexception: pkix path building failed: sun.security.provider.certpath.suncertpathbuilderexception: unable find valid certification path requested target @ com.sun.mail.pop3.pop3store.protocolconnect(pop3store.java:148) @ javax.mail.service.connect(service.java:275) @ javax.mail.service.connect(service.java:156) @ javax.mail.service.connect(service.java:176) @ net.mail.emailattachmentreceiver.downloademailattachments(emailattachmentreceiver.java:69) @ net.mail.emailattachmentreceiver.main(emailattachmentreceiver.java:155) caused by: javax.net.ssl.sslhandshakeexception: sun.security.validator.validatorexception: pkix path building failed: sun.security.provider.certpath.suncertpathbuilderexception: unable find valid certification path requested target @ sun.security.ssl.alerts.getsslexception(alerts.java:192) @ sun.security.ssl.sslsocketimpl.fatal(sslsocketimpl.java:1884) @ sun.security.ssl.handshaker.fatalse(handshaker.java:276) @ sun.security.ssl.handshaker.fatalse(handshaker.java:270) @ sun.security.ssl.clienthandshaker.servercertificate(clienthandshaker.java:1341) @ sun.security.ssl.clienthandshaker.processmessage(clienthandshaker.java:153) @ sun.security.ssl.handshaker.processloop(handshaker.java:868) @ sun.security.ssl.handshaker.process_record(handshaker.java:804) @ sun.security.ssl.sslsocketimpl.readrecord(sslsocketimpl.java:1016) @ sun.security.ssl.sslsocketimpl.performinitialhandshake(sslsocketimpl.java:1312) @ sun.security.ssl.sslsocketimpl.readdatarecord(sslsocketimpl.java:882) @ sun.security.ssl.appinputstream.read(appinputstream.java:102) @ java.io.bufferedinputstream.fill(bufferedinputstream.java:235) @ java.io.bufferedinputstream.read(bufferedinputstream.java:254) @ java.io.datainputstream.readline(datainputstream.java:513) @ com.sun.mail.pop3.protocol.simplecommand(protocol.java:347) @ com.sun.mail.pop3.protocol.<init>(protocol.java:91) @ com.sun.mail.pop3.pop3store.getport(pop3store.java:201) @ com.sun.mail.pop3.pop3store.protocolconnect(pop3store.java:144) ... 5 more caused by: sun.security.validator.validatorexception: pkix path building failed: sun.security.provider.certpath.suncertpathbuilderexception: unable find valid certification path requested target @ sun.security.validator.pkixvalidator.dobuild(pkixvalidator.java:385) @ sun.security.validator.pkixvalidator.enginevalidate(pkixvalidator.java:292) @ sun.security.validator.validator.validate(validator.java:260) @ sun.security.ssl.x509trustmanagerimpl.validate(x509trustmanagerimpl.java:326) @ sun.security.ssl.x509trustmanagerimpl.checktrusted(x509trustmanagerimpl.java:231) @ sun.security.ssl.x509trustmanagerimpl.checkservertrusted(x509trustmanagerimpl.java:126) @ sun.security.ssl.clienthandshaker.servercertificate(clienthandshaker.java:1323) ... 19 more caused by: sun.security.provider.certpath.suncertpathbuilderexception: unable find valid certification path requested target @ sun.security.provider.certpath.suncertpathbuilder.enginebuild(suncertpathbuilder.java:196) @ java.security.cert.certpathbuilder.build(certpathbuilder.java:268) @ sun.security.validator.pkixvalidator.dobuild(pkixvalidator.java:380) ... 25 more not connect message store build successful (total time: 1 second)

*code

/* * alter license header, take license headers in project properties. * alter template file, take tools | templates * , open template in editor. */ bundle net.mail; import java.io.file; import java.io.ioexception; import java.util.properties; import javax.mail.address; import javax.mail.folder; import javax.mail.message; import javax.mail.messagingexception; import javax.mail.multipart; import javax.mail.nosuchproviderexception; import javax.mail.part; import javax.mail.session; import javax.mail.store; import javax.mail.internet.mimebodypart; public class emailattachmentreceiver { private string savedirectory; /** * sets directory attached files stored. * @param dir absolute path of directory */ public void setsavedirectory(string dir) { this.savedirectory = dir; } /** * downloads new messages , saves attachments disk if any. * @param host * @param port * @param username * @param password */ public void downloademailattachments(string host, string port, string username, string password) { properties properties = new properties(); // server setting properties.put("mail.pop3.host", host); properties.put("mail.pop3.port", port); // ssl setting properties.setproperty("mail.pop3.socketfactory.class", "javax.net.ssl.sslsocketfactory"); properties.setproperty("mail.pop3.socketfactory.fallback", "false"); properties.setproperty("mail.pop3.socketfactory.port", string.valueof(port)); session session = session.getdefaultinstance(properties); seek { // connects message store store store = session.getstore("pop3"); store.connect(username, password); // opens inbox folder folder folderinbox = store.getfolder("inbox"); folderinbox.open(folder.read_only); // fetches new messages server message[] arraymessages = folderinbox.getmessages(); (int = 0; < arraymessages.length; i++) { message message = arraymessages[i]; address[] fromaddress = message.getfrom(); string = fromaddress[0].tostring(); string subject = message.getsubject(); string sentdate = message.getsentdate().tostring(); string contenttype = message.getcontenttype(); string messagecontent = ""; // store attachment file name, separated comma string attachfiles = ""; if (contenttype.contains("multipart")) { // content may contain attachments multipart multipart = (multipart) message.getcontent(); int numberofparts = multipart.getcount(); (int partcount = 0; partcount < numberofparts; partcount++) { mimebodypart part = (mimebodypart) multipart.getbodypart(partcount); if (part.attachment.equalsignorecase(part.getdisposition())) { // part attachment string filename = part.getfilename(); attachfiles += filename + ", "; part.savefile(savedirectory + file.separator + filename); } else { // part may message content messagecontent = part.getcontent().tostring(); } } if (attachfiles.length() > 1) { attachfiles = attachfiles.substring(0, attachfiles.length() - 2); } } else if (contenttype.contains("text/plain") || contenttype.contains("text/html")) { object content = message.getcontent(); if (content != null) { messagecontent = content.tostring(); } } // print out details of each message system.out.println("message #" + (i + 1) + ":"); system.out.println("\t from: " + from); system.out.println("\t subject: " + subject); system.out.println("\t sent date: " + sentdate); system.out.println("\t message: " + messagecontent); system.out.println("\t attachments: " + attachfiles); } // disconnect folderinbox.close(false); store.close(); } grab (nosuchproviderexception ex) { system.out.println("no provider pop3."); ex.printstacktrace(); } grab (messagingexception ex) { system.out.println("could not connect message store"); ex.printstacktrace(); } grab (ioexception ex) { ex.printstacktrace(); } } /** * runs programme gmail pop3 server */ public static void main(string[] args) { string host = "pop.gmail.com"; string port = "995"; string username = "username"; string password = "password"; string savedirectory = "d:/attachment"; emailattachmentreceiver receiver = new emailattachmentreceiver(); receiver.setsavedirectory(savedirectory); receiver.downloademailattachments(host, port, username, password); } }

i utilize similar code , can connect (see code examples in javamail-samples.zip, e.g. msgshow.java):

properties props = system.getproperties(); props.setproperty("mail.pop3.socketfactory.class","javax.net.ssl.sslsocketfactory"); props.setproperty("mail.pop3.socketfactory.fallback", "false"); props.setproperty("mail.pop3.socketfactory.port",string.valueof(port)); session session = session.getinstance(props, null); store store = null; store = session.getstore(protocol); // protocol e.g. "pop3" or "imap" store.connect(host, port, user, password);

java email

No comments:

Post a Comment