09 EmailUtil 邮件处理
作者:谎言诞行    发布时间:2024年11月13日

1、简要说明

        在日常的业务开发上,短信和邮件交互是非常常见的。比如:登录校验、账号密码找回、联系客服等等。在我的网站设计之初,并没有多少钱投入,所以选择了最经济实惠的邮件方式来处理这些问题。在Java中,邮件处理需要 javax.mail 这个程序包的支持。在Java 8 中,标准库没有附带它,所以需要自己添加依赖。如果使用我的API工具包,则不需要了。因为,我已经附带依赖信息

image.png

2、实现原理

        在实现Java邮件发送的处理上,主要使用的是SMTP协议。它是发送邮件使用的最佳协议,具体可以看下面讲解。

2.1、SMTP 协议

        SMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。SMTP独立于特定的传输子系统,且只需要可靠有序的数据流信道支持,SMTP的重要特性之一是其能跨越网络传输邮件,即“SMTP邮件中继”。使用SMTP,可实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输。

2.2、邮件的发送原理如下图:

image.png

2.3、邮箱设置(以QQ邮箱为例)

image.png

image.png

2.4、Java原生代码实现邮件发送

        注意:如果要调用程序发送邮件,需要先开通邮箱的smtp服务;以及需要准备邮箱的账号、密码。密码通常是授权码,而非真正的密码,具体看邮箱服务提供商的说明。一下是Java发送邮件的原生参考代码:

image.png

image.png

image.png

        收到的邮件效果如下:

image.png

3、API调用举例

        在第2章,我们见识了在Java原生环境下发送邮件。接下来,我们使用工具包中的API方法,以更简便的方式处理邮件发送。另外,由于我之前是自己使用的,所以API中邮件发送方信息会加上“mickarea.net 官方服务”字样。后续,我会改掉。API调用的前置处理有2个:加密账号和密码信息、以及配置文件编写。

因为,在封装好的API中,我们是根据配置文件来读取要使用的信息的。这样比较灵活,更容易修改。封装的处理程序如下:

image.png

3.1、加密账户名和密码

        为了让邮箱账户更加安全,我们需要把账户信息用RSA算法加密,并写入文件(文件名为固定命名)。然后读取配置文件时,再根据私钥解密。加密处理参考如下:

image.png

3.2、配置文件设置

        新建一个配置文件如下:

image.png

3.3、邮件发送

        下面,我们试试,使用封装后的API发送一封邮件看看。

image.png

        接收到的邮件如下:

image.png

        

        本章节结束

填写一种颜色的字符(不区分大小写),1分钟有效,点击图片刷新