import java.io.PrintWriter;
import java.net.Socket;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.ListIterator;
import java.util.regex.Pattern;
+import javax.net.SocketFactory;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import org.jent.checksmtp.ssl.RespondingX509TrustManager;
public class Processer implements Runnable, ResultNotify {
BufferedReader clientReader;
PrintWriter clientWriter;
+ SocketFactory socketFactory = null;
Socket server = null;
try {
//SMTP Server port
int serverport = ApplicationProperties.getSmtpServerPort();
+ if ( ApplicationProperties.getSmtpServerSSL() ) {
+ //SMTP Server use SSL
+ System.out.println("SMTP Server use SSL.");
+ //socketFactory = SSLSocketFactory.getDefault();
+ //OreOre server connection support TrustManager setting.
+ try {
+ SSLContext sslContext = SSLContext.getInstance("TLS"); //SSL,TLS,TLSv1.1
+ sslContext.init(null,
+ new TrustManager[]{ new RespondingX509TrustManager() }, null);
+ socketFactory = sslContext.getSocketFactory();
+ } catch (NoSuchAlgorithmException nsaEx ) {//from SSLContext.getDefault()
+ //TODO: Error dialog
+ nsaEx.printStackTrace(System.err);
+ } catch (KeyManagementException kmEx) {//from SSLContext.init()
+ //TODO: Error dialog
+ kmEx.printStackTrace(System.err);
+ } catch (IllegalStateException isEx) {//from SSLContext.getSocketFactory()
+ //TODO: Error dialog
+ isEx.printStackTrace(System.err);
+ } catch (Exception ex) { //for new RespondingX506TrustManager()
+ //TODO: Error dialog
+ ex.printStackTrace(System.err);
+ }
+ } else {
+ //SMTP Server is normal Socket.
+ socketFactory = SocketFactory.getDefault();
+ }
+
//Connection to true SMTP server.
- server = new Socket(servername, serverport);
+ server = socketFactory.createSocket(servername, serverport);
serverInput = server.getInputStream();
serverOutput = server.getOutputStream();
clientInput = client.getInputStream();