前言
在使用Java开发项目过程中我们通常会遇到发送邮件的需求,那么系统中是如何使用Java发送邮件的呢?今天我们来了解下使用Java发送邮件的两种方式。
它们分别是使用 apache-commons-email 包来发送邮件、使用javax.mail 包来发送邮件。
我们分别对它们进行了解。
正文
JavaMail
我们来看下使用JavaMail发送一封邮件的Java代码。
1 | /** |
可以看到,要发送一封邮件,Java的处理主要有以下几步:
①系统参数及属性设置,包括使用的协议(Pop3、SMTP等),是否开启ssl加密、发送邮件邮箱的用户名和密码等
②设置邮件属性,比如主题、内容、附件、接收人、抄送人等等
③发送邮件
我这儿使用的是QQ邮箱,要注意使用SMTP传输协议时,要开启SMTP,使用SSL,邮箱的认证密码不是邮箱密码,而是授权码,需要在QQ邮箱进行设置,如下:
PS:在发送邮件时,如果想插入图片,可以设置成Html的内联图片,然后通过message.setContent添加这个Html文档。还有一些其它的功能(比如给某个人发送回执等)都可以通过设置实现,有兴趣的可以看下。
整个发送邮件的代码基本如上,还是比较易于理解的,我们不再对此做过多介绍。
apache-commons-email
再来看看Apache提供的apache-commons-email这个包。
这个包就是对JavaMail进行了一层封装,我们可以看到这个工具包本质还是使用了JavaMail去发送邮件。
我们来看一个使用apache-commons-email包去发送邮件的例子。
1 | public class SendMail { |
对比两个程序,可以了解apache-commons-email这个包把JavaMail的Session给我们隐藏了,使得我们更专注于API调用,同时它分出了三种邮件类型,供我们使用。
使用apache-commons-email,要发送不同类型的邮件,可以创建不同的mail class,如下:
//SimpleEmail email = new SimpleEmail();//创建简单邮件,不可添加附件、HTML文本等
//MultiPartEmail email = new MultiPartEmail();//创建能加附件的邮件,可多个、网络附件亦可
//HtmlEmail email = new HtmlEmail();//创建能加附件内容为HTML文本的邮件、HTML直接内联图片
上面基本上是使用Java发送邮件的两种方式。
我测试了一下发邮件的代码,可以成功收到邮件。如下图:
总结
在后台应用系统中邮件系统还是比较常用的,可以用来提供系统邮件预警、发送客户邮件进行活动推广等等一系列的事情。
SpringBoot里整合了JavaMail,创建SpringBoot项目时可以直接引入,是十分方便的。
在application.properties里的配置均以spring.mail开头。
1 | # JavaMailSender 邮件发送的配置 |