基于SSL的JavaMail
来源:互联网 发布:什么打车软件赚钱 编辑:程序博客网 时间:2024/05/24 05:06
最近有一个项目需要支持SSL的JavaMail收发邮件. 经过一些调查, 把使用SSL的JavaMail方法总结如下.
JavaMail提供商自身缺乏对SSL连接的支持, 所以必须使用JSSE API来支持SSL连接. 下面就是如何使用JSSE API来连接POP3/IMAP/NNTP等mail存储提供商.
以下的代码需要运行在J2SE1.4.x或者以上版本.
首先, 需要把JSSE的安全provider注册到当前虚拟机的环境下, 有两种方法:
一、修改Java本地安全文件
<JAVA_HOME>/jre/lib/security/java.security
二、动态的添加security provider
然后, 需要使用JSSE的SSL socket factory来取代默认的socket factory. 取代的办法就是通过设置JavaMail的一些缺省属性来达到这一点.
mail.<protocol>.socketFactory.class
mail.<protocol>.socketFactory.fallback
mail.<protocol>.socketFactory.port
mail.<protocol>.timeout
下面的代码就是替换不同协议的socket factory.
如果我们希望JavaMail只处理SSL的连接, 对于非SSL的连接不做处理, 那么我们最好设置fallback为false.
Properties props = System.getProperties();
// IMAP provider
props.setProperty( " mail.imap.socketFactory.class " , SSL_FACTORY);
// POP3 provider
props.setProperty( " mail.pop3.socketFactory.class " , SSL_FACTORY);
// NNTP provider (if any)
// props.setProperty( "mail.nntp.socketFactory.class", SSL_FACTORY);
props.setProperty( " mail.imap.socketFactory.fallback " , " false " );
// POP3 provider
props.setProperty( " mail.pop3.socketFactory.fallback " , " false " );
// NNTP provider (if any)
// props.setProperty( "mail.nntp.socketFactory.fallback", "false");
接下来, 我们需要做的就是使用SSL协议对应的端口改变默认端口. 这个端口根据邮件服务器的设置不同不同, 下面的代码中写得是一般地SSL默认端口.
props.setProperty( " mail.imap.port " , " 993 " );
props.setProperty( " mail.imap.socketFactory.port " , " 993 " );
// POP3 provider
props.setProperty( " mail.pop3.port " , " 995 " );
props.setProperty( " mail.pop3.socketFactory.port " , " 995 " );
// NNTP provider (if any)
// props.setProperty( "mail.pop3.port", "563");
// props.setProperty( "mail.pop3.socketFactory.port", "563");
在设置完所有属性之后, 我们就可以使用这些属性来创建session了. 之后的步骤和一般的JavaMail处理完全相同.
关于这个topic的reference还可以参考
Java Tip 115: Secure JavaMail with JSSE
利用JavaMail收/发Gmail邮件(SSL)
JavaMail: Send mail via SMTP and SSL
- 基于SSL的JavaMail
- 基于SSL的JavaMail
- 基于SSL的JavaMail
- 基于JavaMail的SearchTerm
- JavaMail使用SSL的方式登录
- 基于JavaMail的邮件客户端--JustLook(一、JavaMail简介)
- 基于JavaMail的邮件发送程序!
- java 基于JavaMail的发送邮件
- 基于JavaMail的java邮件发送
- 基于JavaMail的Java邮件发送
- 基于javaMail发送邮件的实现
- 基于javaMail的简单邮件发送
- 基于javaMail的复杂邮件发送
- 基于JavaMail的Java邮件开发
- 基于SSL的HTTPS协议
- 实现基于SSL的FTPS
- JAVAMAIL SSL 和 NO-SSL 发送邮件
- javamail设置SSL发送邮件
- 作业
- 04年华为的一道排序题..
- Ubuntu GNOME快捷键
- 5种你不可错过的免费字体
- install cppUnit for eclipse
- 基于SSL的JavaMail
- 一个开源的IoC采集服务器体系结构设计
- OOPS中文开放式课程计划=足不出户的“出国留学”
- (JSP)在文本域中显示超链接——服务器部分代码
- 某广电行业网站被挂马 Backdoor.Win32.Gpigeon.aic/ sx.exe
- 关于RSS (转自 百度知道)
- 我的第一贴: 小试牛刀, Oracle的Transaction
- 水晶报表
- [转]我的Ubuntu7.04设置小集