最近有一个项目需要支持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
Security.addProvider(
new
com.sun.net.ssl.internal.ssl.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.
final
String SSL_FACTORY
=
"
javax.net.ssl.SSLSocketFactory
"
;
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);
如果我们希望JavaMail只处理SSL的连接, 对于非SSL的连接不做处理, 那么我们最好设置fallback为false.
//
IMAP provider
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默认端口.
//
IMAP provider
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处理完全相同.
Session session
=
Session.getInstance(props);
关于这个topic的reference还可以参考
Java Tip 115: Secure JavaMail with JSSE利用JavaMail收/发Gmail邮件(SSL)
JavaMail: Send mail via SMTP and SSL
分享到:
相关推荐
**基于Javamail的邮件收发系统** JavaMail是一个开放源码的API,它为Java程序员提供了一套全面的接口来处理电子邮件。这个系统的设计目的是使得开发者能够方便地发送和接收邮件,包括附件、HTML内容以及MIME多部分...
JavaMail邮件系统的设计与实现是基于Java编程语言的,它利用了JavaMail API来处理电子邮件的发送、接收等任务。JavaMail API是一个开源的、跨平台的库,它提供了与各种邮件服务器通信的能力,支持SMTP(简单邮件传输...
《基于Javamail的邮件收发系统》是一份完整的毕业设计资料,涵盖了从理论到实践的全过程,包括Word论文、开题报告、任务书以及答辩PPT。这个项目主要探讨了如何使用JavaMail API来实现一个高效、稳定的邮件收发系统...
在尝试使用JavaMail发送邮件时,如果邮件服务器要求使用SSL(Secure Socket Layer)或TLS(Transport Layer Security)协议来确保通信安全,开发者可能会遇到一些挑战。本文将深入探讨如何解决这一问题,主要基于...
这个基于 Javamail 的邮件发送客户端项目,显然利用了这一强大的工具来构建一个 Web 界面,用于四川联通电子渠道的邮件服务。下面我们将详细探讨 JavaMail 的核心概念以及如何实现邮件发送客户端。 1. **JavaMail ...
使用JavaMail API时,可以结合Java的安全机制,如SSL(Secure Sockets Layer)或者TLS(Transport Layer Security)来保护邮件的传输过程中的数据安全。 附件处理: 系统应支持发送和接收带有附件的邮件,并能够对...
JavaMail还支持发送HTML邮件、添加附件、使用SSL/TLS加密连接等高级特性。例如,发送HTML邮件可以使用`MimeBodyPart`和`MimeMultipart`: ```java MimeBodyPart htmlPart = new MimeBodyPart(); htmlPart....
这个"基于Javamail的邮件收发系统_project"显然是一款利用JavaMail API实现的邮件系统,可以帮助用户方便地处理电子邮件的发送、接收和管理。下面将详细阐述JavaMail的核心概念和关键功能,以及如何构建这样的邮件...
这个基于Javamail的邮件收发系统是一个完整的项目,包含了系统源代码、论文、开题报告、任务书、外文翻译、文献综述以及答辩PPT等文件,非常适合学习和研究如何使用JavaMail API来实现邮件服务。 1. **JavaMail API...
JavaMail 是一个强大的开源库,专门用于在Java应用程序中处理电子邮件。这个小例子将向我们展示如何使用JavaMail API发送电子邮件。在这个过程中,我们将探讨以下几个关键知识点: 1. **JavaMail API**: 这是一个...
这个“基于Javamail的邮件收发系统”项目可能是为了实现一个完整的邮件客户端或者服务端应用,使用JavaMail API来处理邮件的发送与接收功能。下面我们将详细探讨JavaMail的核心概念、工作原理以及如何使用它构建邮件...
基于 JavaMail 设计的电子邮件系统涵盖了客户端和服务器端的开发,涉及到多个关键协议和标准,如 SMTP、POP3、IMAP 和 MIME。 1. SMTP (Simple Mail Transfer Protocol):SMTP 是用于在互联网上传输电子邮件的基础...
这个项目“基于javamail的电子邮件系统的设计与实现”显然涵盖了如何利用JavaMail库构建一个非Web的、基于Java客户端的邮件系统,特别是与腾讯邮件系统对接的部分。 在设计这样的系统时,开发者首先需要理解SMTP...
这个"精选_基于JavaMail的邮件收发系统_源码打包"提供了实现邮件收发功能的完整源代码,对于学习和理解JavaMail API以及构建实际邮件应用来说是一个宝贵的资源。 JavaMail的核心API包括`javax.mail`和`javax.mail....
《基于Javamail的邮件收发系统设计与实现》 在信息技术日益发达的今天,电子邮件已经成为人们日常生活和工作中不可或缺的通信工具。基于JavaMail的邮件收发系统,旨在提供一个高效、稳定且易于使用的邮件服务接口,...
在Android平台上开发一个基于JavaMail的手机邮件发送器是一项实用且技术性强的任务。JavaMail库为开发者提供了在移动设备上实现邮件发送功能的能力,而Android系统则提供了丰富的API支持,使得这种集成变得可能。...
6. **认证机制**:支持 SSL/TLS 安全连接,以及基于用户名和密码的身份验证。 7. **邮件属性和头信息**:如何设置和获取邮件的主题、发件人、收件人等头部信息。 其次,`javamail-1_4_1.zip` 是 JavaMail 的一个...
以下是基于 JavaMail 的核心知识点和相关细节: 1. **JavaMail API 概述**:JavaMail API 是一套接口和类,用于构建能够处理邮件服务的 Java 应用程序。它提供了与多种邮件协议(如 SMTP、POP3、IMAP)交互的能力,...
4. **认证与安全**:支持SSL/TLS加密,进行安全的邮件通信,并可进行SMTP认证,如PLAIN、LOGIN或 XOAUTH2。 5. **邮件头操作**:设置和读取邮件头字段,如From、To、Cc、Bcc、Subject和Date。 6. **邮件存储**:使用...