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:

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

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -