java - Using Javamail and Greenmail for SMTPS/SSL -
i'm trying write test uses javamail smtp or smtps send message via ssl , authentication greenmail server i'm running.
i've written quick little sub should i'm wanting:
import java.util.properties; import javax.mail.session; import javax.mail.transport; import com.icegreen.greenmail.user.greenmailuser; import com.icegreen.greenmail.util.greenmail; public class mailtest { public static void main(string[] args) throws exception { greenmail greenmail = new greenmail(); try { greenmail.start(); string email = "foo@bar"; string userid = "user"; string password = "pa$$word"; greenmailuser setuser = greenmail.setuser(email, userid, password); setuser.create(); greenmailuser user = greenmail.getmanagers().getusermanager().getuser(userid); system.out.println("user created:" + user.getemail() + ":" + user.getlogin() + ":" + user.getpassword()); int portsmtps = greenmail.getsmtps().getport(); system.out.println("smtps started on port:" + portsmtps); properties props = new properties(); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.host", "localhost"); props.put("mail.smtp.socketfactory.port", portsmtps); props.put("mail.smtp.socketfactory.class", "javax.net.ssl.sslsocketfactory"); props.put("mail.smtp.socketfactory.fallback", "false"); session session = session.getinstance(props); transport transport = session.gettransport("smtp"); transport.connect("localhost", portsmtps, userid, password); system.out.println("transport connected: " + transport.isconnected()); } { greenmail.stop(); } } }
my problem several exceptions:
exception in thread "thread-7" java.lang.runtimeexception: javax.net.ssl.sslexception: connection has been shutdown: javax.net.ssl.sslhandshakeexception: received fatal alert: certificate_unknown @ com.icegreen.greenmail.smtp.smtphandler.run(unknown source) caused by: javax.net.ssl.sslexception: connection has been shutdown: javax.net.ssl.sslhandshakeexception: received fatal alert: certificate_unknown @ com.sun.net.ssl.internal.ssl.sslsocketimpl.checkeof(sslsocketimpl.java:1293) @ com.sun.net.ssl.internal.ssl.appinputstream.read(appinputstream.java:65) @ sun.nio.cs.streamdecoder.readbytes(streamdecoder.java:264) @ sun.nio.cs.streamdecoder.implread(streamdecoder.java:306) @ sun.nio.cs.streamdecoder.read(streamdecoder.java:158) @ java.io.inputstreamreader.read(inputstreamreader.java:167) @ java.io.bufferedreader.fill(bufferedreader.java:136) @ java.io.bufferedreader.readline(bufferedreader.java:299) @ java.io.bufferedreader.readline(bufferedreader.java:362) @ com.icegreen.greenmail.smtp.smtpconnection.readline(unknown source) @ com.icegreen.greenmail.smtp.smtphandler.handlecommand(unknown source) ... 1 more caused by: javax.net.ssl.sslhandshakeexception: received fatal alert: certificate_unknown @ com.sun.net.ssl.internal.ssl.alerts.getsslexception(alerts.java:174) @ com.sun.net.ssl.internal.ssl.alerts.getsslexception(alerts.java:136) @ com.sun.net.ssl.internal.ssl.sslsocketimpl.recvalert(sslsocketimpl.java:1720) @ com.sun.net.ssl.internal.ssl.sslsocketimpl.readrecord(sslsocketimpl.java:954) @ com.sun.net.ssl.internal.ssl.sslsocketimpl.performinitialhandshake(sslsocketimpl.java:1138) @ com.sun.net.ssl.internal.ssl.sslsocketimpl.writerecord(sslsocketimpl.java:632) @ com.sun.net.ssl.internal.ssl.appoutputstream.write(appoutputstream.java:59) @ sun.nio.cs.streamencoder.writebytes(streamencoder.java:202) @ sun.nio.cs.streamencoder.implflushbuffer(streamencoder.java:272) @ sun.nio.cs.streamencoder.implflush(streamencoder.java:276) @ sun.nio.cs.streamencoder.flush(streamencoder.java:122) @ java.io.outputstreamwriter.flush(outputstreamwriter.java:212) @ java.io.bufferedwriter.flush(bufferedwriter.java:236) @ java.io.printwriter.flush(printwriter.java:276) @ com.icegreen.greenmail.util.internetprintwriter.println(unknown source) @ com.icegreen.greenmail.util.internetprintwriter.println(unknown source) @ com.icegreen.greenmail.smtp.smtpconnection.println(unknown source) @ com.icegreen.greenmail.smtp.smtphandler.sendgreetings(unknown source) ... 1 more exception in thread "main" javax.mail.messagingexception: not connect smtp host: localhost, port: 3465; 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.smtp.smtptransport.openserver(smtptransport.java:1934) @ com.sun.mail.smtp.smtptransport.protocolconnect(smtptransport.java:638) @ javax.mail.service.connect(service.java:295) @ mailtest.main(mailtest.java:35) 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 @ com.sun.net.ssl.internal.ssl.alerts.getsslexception(alerts.java:174) @ com.sun.net.ssl.internal.ssl.sslsocketimpl.fatal(sslsocketimpl.java:1649) @ com.sun.net.ssl.internal.ssl.handshaker.fatalse(handshaker.java:241) @ com.sun.net.ssl.internal.ssl.handshaker.fatalse(handshaker.java:235) @ com.sun.net.ssl.internal.ssl.clienthandshaker.servercertificate(clienthandshaker.java:1206) @ com.sun.net.ssl.internal.ssl.clienthandshaker.processmessage(clienthandshaker.java:136) @ com.sun.net.ssl.internal.ssl.handshaker.processloop(handshaker.java:593) @ com.sun.net.ssl.internal.ssl.handshaker.process_record(handshaker.java:529) @ com.sun.net.ssl.internal.ssl.sslsocketimpl.readrecord(sslsocketimpl.java:893) @ com.sun.net.ssl.internal.ssl.sslsocketimpl.performinitialhandshake(sslsocketimpl.java:1138) @ com.sun.net.ssl.internal.ssl.sslsocketimpl.starthandshake(sslsocketimpl.java:1165) @ com.sun.net.ssl.internal.ssl.sslsocketimpl.starthandshake(sslsocketimpl.java:1149) @ com.sun.mail.util.socketfetcher.configuresslsocket(socketfetcher.java:507) @ com.sun.mail.util.socketfetcher.getsocket(socketfetcher.java:238) @ com.sun.mail.smtp.smtptransport.openserver(smtptransport.java:1900) ... 3 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:323) @ sun.security.validator.pkixvalidator.enginevalidate(pkixvalidator.java:217) @ sun.security.validator.validator.validate(validator.java:218) @ com.sun.net.ssl.internal.ssl.x509trustmanagerimpl.validate(x509trustmanagerimpl.java:126) @ com.sun.net.ssl.internal.ssl.x509trustmanagerimpl.checkservertrusted(x509trustmanagerimpl.java:209) @ com.sun.net.ssl.internal.ssl.x509trustmanagerimpl.checkservertrusted(x509trustmanagerimpl.java:249) @ com.sun.net.ssl.internal.ssl.clienthandshaker.servercertificate(clienthandshaker.java:1185) ... 13 more caused by: sun.security.provider.certpath.suncertpathbuilderexception: unable find valid certification path requested target @ sun.security.provider.certpath.suncertpathbuilder.enginebuild(suncertpathbuilder.java:174) @ java.security.cert.certpathbuilder.build(certpathbuilder.java:238) @ sun.security.validator.pkixvalidator.dobuild(pkixvalidator.java:318) ... 19 more
i've tried looking @ few other answers here, must missing something:
- javamail send secure email through vps - sslhandshake exception, pkix path building failed, etc. - can't send mail
- pkix path building failed: unable find valid certification path requested target
- using javamail tls
sorry long post , in advance advice.
you should start greenmail server this:
security.setproperty("ssl.socketfactory.provider", dummysslsocketfactory.class.getname()); greenmail mailserver = new greenmail(serversetuptest.smtps); mailserver.start();
Comments
Post a Comment