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
同事的邮件收发 使用了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
...全文
相关推荐
浅析JavaMail发送邮件后再通过JavaMail接收格式问题
本文将介绍JavaMail发送邮件后再通过JavaMail接收格式问题,主要讨论邮件发送和接收的格式问题,以及如何正确地解析邮件中的图片、附件等内容。
javamail问题及解决方案
然而,在实际应用中,JavaMail经常会遇到各种问题,比如连接失败、身份验证错误等。本文将基于一个具体的JavaMail示例代码,探讨在使用JavaMail过程中常见的问题及其解决方案。
javaMail问题
在描述中提到的博文链接已失效,但通常这样的博客会讨论关于 JavaMail 使用中遇到的问题,可能包括但不限于以下常见知识点:1.
JavaMail 内存溢出问题
总结,JavaMail 内存溢出问题主要源于邮件处理不当和资源管理不足。
Android使用JavaMail后台发送邮件遇到的一些问题
**线程安全**:由于发送邮件通常是在后台线程中执行,要确保JavaMail API的使用是线程安全的,避免并发问题。7.


