javamail问题
同事写了一个邮件收发的程序,在sun jdk环境下可以正常运行 ,但是当使用ibm jdk(也就是websphere 的JRE环境)时却发生了错误
同事的邮件收发 使用了ssl连接
下面是程序主要代码
final String SSL_FACTORY = "com.ibm.websphere.ssl.protocol.SSLSocketFactory";//SSL
Properties props = System.getProperties();
props.setProperty("mail.smtp.ssl.enable", "true");
props.setProperty("mail.smtp.socketFactory.class",SSL_FACTORY);
props.setProperty("mail.smtp.host", hostName);
props.setProperty("mail.smtp.port", hostPort);
props.put("mail.smtp.auth", "true");
final String username = userName;
final String password = passWord;
session = Session.getDefaultInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
session.setDebug(debug);
Transport tp = session.getTransport("smtp");
tp.connect();
tp.close();
这是运行程序后发生的错误:
DEBUG: setDebug: JavaMail version 1.4.2
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 465, isSSL true
javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465;
nested exception is:
java.io.IOException: Couldn't connect using socket factory class com.ibm.websphere.ssl.protocol.SSLSocketFactory to host, port: smtp.gmail.com, 465; Exception: java.lang.NullPointerException
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1545)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:453)
at javax.mail.Service.connect(Service.java:313)
at javax.mail.Service.connect(Service.java:172)
at javax.mail.Service.connect(Service.java:121)
at com.chncloud.mail.SMTP.initialize(SMTP.java:118)------即tp.connect();这一行代码 at com.chncloud.mail.test.MainTest.testSMTP(MainTest.java:56)
at com.chncloud.mail.test.MainTest.main(MainTest.java:24)
Caused by: java.io.IOException: Couldn't connect using socket factory class com.ibm.websphere.ssl.protocol.SSLSocketFactory to host, port: smtp.gmail.com, 465; Exception: java.lang.NullPointerException
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:216)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1511)
... 7 more
Caused by: java.lang.NullPointerException
at com.ibm.websphere.ssl.protocol.SSLSocketFactory.createSocket(SSLSocketFactory.java:304)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:256)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:201)
... 8 more