由于java编程语言本身的强大性与使用的简明性,使得越来越多的人开始在日常工作中广泛应用它。今天主要为大家介绍一下,在java中用TLS发邮件的方法,以及如何用SSL发送邮件。
首先,我们可以知道的是常用的邮件发送方式主要有TLS, SSL和default这几种。他们的主要差别在于TLS和SSL都是通过加密的方式进行数据通信,而default的则是没有加密的。所以默认的方式在大多数情况下都被禁用了。那么我们今天就主要来看一下TLS和SSL这两种方式。
先给大家看一个简单示例,以gmail账户为例。假设我们有一个gmail的帐号,希望使用程序通过它发送邮件到一个指定的目的邮件地址。我们首先需要看一下gmail邮件服务器的相关设置信息:
在前面这些配置信息的基础上,我们可以通过它们来和gmail邮件服务器通信。首先前面的这些内容将作为一个配置项传入给gmail smtp server。在我们的具体实现里可以将这部分写到一个配置文件里,然后读取出来,也可以手动的设置。
手动设置的代码如下所示:
Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.port", "587");
设置完成后下一步就是建立一个和邮件服务器连接的session了。采用这种方式需要提供用户名和密码信息。假设我们已经有的gmail帐号为user@gmail.com, 密码为password。
那么建立session连接的代码如下:
Session session = Session.getInstance(props , new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } });
设置好session之后的下一步就是设置我们需要发送的邮件内容等信息:
Message message = new MimeMessage(session); message.setFrom(new InternetAddress(username)); message.setRecipients(Message.RecipientType.TO , InternetAddress.parse("newuser@gmail.com")); message.setSubject("Testing Subject"); message.setText("Dear user," + "\n\n No spam to my email, please!"); Transport.send(message);
我们设定收件人的邮件地址为newuser@gmail.com,邮件的主题为Testing Subject。真正实现发送邮件的这部分代码是Transport.send(),它将最后组装成的邮件字符串发送出去。
然后我们再来看一下SSL的操作流程。它的发送方式其实和TLS大致相同,首先也是设置邮件发送的配置项,只是因为采用的协议和端口不一样,具体认证的方式也有差别。这里session的创建方式如下:
Session session = Session.getDefaultInstance(props , new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("abc@163.com", "abc"); } });
其他的代码基本上都是一样的。除了上述的两种方式,还有一种默认的邮件发送方式,因为它不是采用的通信加密,在一些本地局域网的测试环境里可能会用到。和前面的代码里主要的区别就在于它的创建session的方式很简单,一般不需要做任何身份验证,典型的代码实现如下:
Session session = Session.getDefaultInstance(props);
这里的props就是环境的基本配置项,典型的如下:
mail.smtp.auth = false mail.smtp.starttls.enable = false mail.smtp.port = 25 mail.smtp.host = localhost username = password =
以上就是关于在java中怎么用TLS和 SSL中发送邮件的有关内容。如果你对java的应用感兴趣,想要了解更多java常见问题,敬请关注奇Q 工具网。
推荐阅读:
java的邮件服务器james怎么配置,怎么发送含有附件的邮件?