如何使用Java客户端使用SSL通过SMTP发送电子邮件?

时间:2009-08-17 11:28:40

标签: java security ssl ssl-certificate

我需要使用java客户端使用ssl通过smtp发送电子邮件。我不知道该怎么做。

  1. 如果我的Windows机器上安装了服务器证书,我该如何使用它?
  2. 如果我希望它在非Windows机器上运行,我是否需要以不同的方式获取证书?
  3. 顺便说一句:如果我使用的SMTP服务器使用SSL,我可以确定它会使用SSL将邮件发送给收件人吗?

4 个答案:

答案 0 :(得分:1)

查看this tutorial,其中详细介绍了如何使用JavaMail和JSSE(安全套接字扩展)和证书安装。

如果您不想使用JavaMail,则可以通过TCP套接字自行实施SMTP协议。 See here。但是你将重新实现许多乍一看似乎微不足道的工作,但会有许多边缘情况和复杂性。我强烈建议使用API​​来完成这项工作。

答案 1 :(得分:0)

  1. 要简单地充当SSL服务器的客户端,您不需要自己的证书。
  2. 在非Windows机器上没有什么不同,特别是在使用Java时。
  3. 您可能要做的一件事就是tell your Java client to trust服务器的证书。

    您与SMTP服务器的SSL连接是点对点的。绝对不能保证它将通过SSL连接到其他客户端和服务器(除非您控制服务器)。

答案 2 :(得分:0)

您也可以使用MailReporter。 它支持SSL和TLS! http://magithou.com/tips-a-tricks/42-setup-e-mail-accounts/81-ssl-support.htm

答案 3 :(得分:0)

希望这可以帮助您设置服务器证书,使其受到您的Java客户端代码的信任。

STORE=/path/to/JRE/cacerts
keytool -import -trustcacerts -keystore $STORE -storepass changeit -noprompt -file mymailserver.pem -alias mymailserver

请使用反斜杠而不是上面的转义斜杠(Windows家伙在路径标识符LOL中混淆了自己。)

参考: http://vafer.org/blog/20061010073725/