`

基于SSL的JavaMail

 
阅读更多

最近有一个项目需要支持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的邮件收发系统** JavaMail是一个开放源码的API,它为Java程序员提供了一套全面的接口来处理电子邮件。这个系统的设计目的是使得开发者能够方便地发送和接收邮件,包括附件、HTML内容以及MIME多部分...

    基于JavaMail邮件系统的设计与实现 论文

    JavaMail邮件系统的设计与实现是基于Java编程语言的,它利用了JavaMail API来处理电子邮件的发送、接收等任务。JavaMail API是一个开源的、跨平台的库,它提供了与各种邮件服务器通信的能力,支持SMTP(简单邮件传输...

    基于Javamail的邮件收发系统(word论文+开题报告+任务书+答辩PPT).zip

    《基于Javamail的邮件收发系统》是一份完整的毕业设计资料,涵盖了从理论到实践的全过程,包括Word论文、开题报告、任务书以及答辩PPT。这个项目主要探讨了如何使用JavaMail API来实现一个高效、稳定的邮件收发系统...

    关于用javamail发送邮件时,由于邮件服务器要SSL,解决办法

    在尝试使用JavaMail发送邮件时,如果邮件服务器要求使用SSL(Secure Socket Layer)或TLS(Transport Layer Security)协议来确保通信安全,开发者可能会遇到一些挑战。本文将深入探讨如何解决这一问题,主要基于...

    自己写的一个基于Javamail的邮件发送客户端

    这个基于 Javamail 的邮件发送客户端项目,显然利用了这一强大的工具来构建一个 Web 界面,用于四川联通电子渠道的邮件服务。下面我们将详细探讨 JavaMail 的核心概念以及如何实现邮件发送客户端。 1. **JavaMail ...

    基于Javamail的邮件收发系统的实现.rar

    使用JavaMail API时,可以结合Java的安全机制,如SSL(Secure Sockets Layer)或者TLS(Transport Layer Security)来保护邮件的传输过程中的数据安全。 附件处理: 系统应支持发送和接收带有附件的邮件,并能够对...

    基于JavaMail的Java邮件发送-附源码

    JavaMail还支持发送HTML邮件、添加附件、使用SSL/TLS加密连接等高级特性。例如,发送HTML邮件可以使用`MimeBodyPart`和`MimeMultipart`: ```java MimeBodyPart htmlPart = new MimeBodyPart(); htmlPart....

    基于Javamail的邮件收发系统-project

    这个"基于Javamail的邮件收发系统_project"显然是一款利用JavaMail API实现的邮件系统,可以帮助用户方便地处理电子邮件的发送、接收和管理。下面将详细阐述JavaMail的核心概念和关键功能,以及如何构建这样的邮件...

    基于Javamail的邮件收发系统(系统源代码)

    这个基于Javamail的邮件收发系统是一个完整的项目,包含了系统源代码、论文、开题报告、任务书、外文翻译、文献综述以及答辩PPT等文件,非常适合学习和研究如何使用JavaMail API来实现邮件服务。 1. **JavaMail API...

    基于JavaMail的Java邮件发送小例子

    JavaMail 是一个强大的开源库,专门用于在Java应用程序中处理电子邮件。这个小例子将向我们展示如何使用JavaMail API发送电子邮件。在这个过程中,我们将探讨以下几个关键知识点: 1. **JavaMail API**: 这是一个...

    基于Javamail的邮件收发系统.zip

    这个“基于Javamail的邮件收发系统”项目可能是为了实现一个完整的邮件客户端或者服务端应用,使用JavaMail API来处理邮件的发送与接收功能。下面我们将详细探讨JavaMail的核心概念、工作原理以及如何使用它构建邮件...

    基于javaMail电子邮件系统的设计(含源文件).pdf

    基于 JavaMail 设计的电子邮件系统涵盖了客户端和服务器端的开发,涉及到多个关键协议和标准,如 SMTP、POP3、IMAP 和 MIME。 1. SMTP (Simple Mail Transfer Protocol):SMTP 是用于在互联网上传输电子邮件的基础...

    基于javamail的电子邮件系统的设计与实现,一整套,工程,word,ppt,直接运行

    这个项目“基于javamail的电子邮件系统的设计与实现”显然涵盖了如何利用JavaMail库构建一个非Web的、基于Java客户端的邮件系统,特别是与腾讯邮件系统对接的部分。 在设计这样的系统时,开发者首先需要理解SMTP...

    精选_基于JavaMail的邮件收发系统_源码打包

    这个"精选_基于JavaMail的邮件收发系统_源码打包"提供了实现邮件收发功能的完整源代码,对于学习和理解JavaMail API以及构建实际邮件应用来说是一个宝贵的资源。 JavaMail的核心API包括`javax.mail`和`javax.mail....

    基于Javamail的邮件收发系统(系统+论文+开题报告+任务书+外文翻译+文献综述+答辩PPT).zip

    《基于Javamail的邮件收发系统设计与实现》 在信息技术日益发达的今天,电子邮件已经成为人们日常生活和工作中不可或缺的通信工具。基于JavaMail的邮件收发系统,旨在提供一个高效、稳定且易于使用的邮件服务接口,...

    Android系统基于javamail的手机邮件发送器

    在Android平台上开发一个基于JavaMail的手机邮件发送器是一项实用且技术性强的任务。JavaMail库为开发者提供了在移动设备上实现邮件发送功能的能力,而Android系统则提供了丰富的API支持,使得这种集成变得可能。...

    javaMail代码

    6. **认证机制**:支持 SSL/TLS 安全连接,以及基于用户名和密码的身份验证。 7. **邮件属性和头信息**:如何设置和获取邮件的主题、发件人、收件人等头部信息。 其次,`javamail-1_4_1.zip` 是 JavaMail 的一个...

    javamail.CHM

    以下是基于 JavaMail 的核心知识点和相关细节: 1. **JavaMail API 概述**:JavaMail API 是一套接口和类,用于构建能够处理邮件服务的 Java 应用程序。它提供了与多种邮件协议(如 SMTP、POP3、IMAP)交互的能力,...

    javamail-1.4.7完整.rar

    4. **认证与安全**:支持SSL/TLS加密,进行安全的邮件通信,并可进行SMTP认证,如PLAIN、LOGIN或 XOAUTH2。 5. **邮件头操作**:设置和读取邮件头字段,如From、To、Cc、Bcc、Subject和Date。 6. **邮件存储**:使用...

Global site tag (gtag.js) - Google Analytics