JavaMail 基于安全连接 SSL/TLS 收发邮件

JavaMail 中的安全连接 SSL/TLS

现在 JavaMail 支持使用 SSL/TLS 建立安全连接访问邮件服务器。为了简化安全访问,提供了两种其中启用 SSL 安全连接的方法:

  1. 配置连接属性
// 这里以 SMTP 启用 SSL 安全连接为例
props.setProperty("mail.smtp.ssl.enable", "true");
  1. 使用安全连接协议
// JavaMail 中的非安全连接协议 smtp / pop3 / imap
props.setProperty("mail.transport.protocol", "smtp");

// JavaMail 中的安全连接协议 smtps / pop3s / imaps
props.setProperty("mail.transport.protocol", "smtps");

此外,IMAP 和 SMTP 协议支持使用 **"STARTTLS"** 命令 (参见 RFC 2487 和 RFC 3501) 来切换要由 TLS 保护的连接。在服务器同时支持 SSL 连接和 non-SSL 连接的时候最好使用 STARTTLS 命令。

STARTTLS 支持

STARTTLS 支持在标准的 "IMAP" 和 "SMTP "协议中可用,但必须通过将适当的属性 "mail.imap.starttls.Enable" 或 "mail.smtp.starttls.Enable" 设置为 "true" 来启用。设置时,如果服务器支持 STARTTLS 命令,则在建立连接和发送任何登录信息之前将使用该命令。

// IMAP 协议设置 STARTTLS
props.setProperty("mail.imap.starttls.Enable", "true");
// SMTP 协议设置 STARTTLS
props.setProperty("mail.smtp.starttls.Enable", "true");

安全协议

当使用新的协议名称时,配置属性也必须使用这些协议名称。例如,将属性 "mail.smtps.host" 设置为指定在 SSL 上对 SMTP 使用 "smtps" 协议时要连接到的计算机的主机名。类似地,要在通过 SSL 为 IMAP 使用 "IMAPS" 协议时设置 IMAP 协议超时,请设置属性 "mail.imaps.timeout" 。请参阅用于可用属性列表的不同协议包的包文档,这些属性总是使用表单邮件的属性名称来设置 "mail.."。

Transport.send 方法将使用默认传输协议 "SMTP"。如果要在 SMTP 协议上启用 SSL 安全连接,需要设置属性 "mail.smtp.ssl.enable" 为 "true"。这通常是最简单的方法。

props.setProperty("mail.smtp.ssl.enable", "true");

或者,若要将 Session.getTransport.protocol() 方法返回的默认传输协议更改为基于安全连接 SSL 上的 SMTP,请将属性 "mail.transport.protocol" 设置为 "smtps"。若要更改用于英特网地址的传输 (由 Session.getTransport(Address) 方法返回并由 Transport.send() 方法使用),请使用 Session.setProtocolForAddress() 方法设置相关协议。

// 通过设置属性为安全协议建立安全连接
props.setProperty("mail.transport.protocol", "smtps");
// 通过设置 Session 的协议实现用于因特网地址的安全连接
session.setProtocolForAddress(&#
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值