一 前言
测试所使用的环境
测试使用的环境是企业主流的SSM 框架即 SpringMVC+Spring+Mybatis。为了节省时间,我直接使用的是我上次的“SSM项目中整合Echarts开发”该项目已经搭建完成的SSM环境。
标题说的四种姿势指的是哪四种姿势?发送text格式的邮件
发送HTML格式的邮件
基于FreeMarker模板引擎发送邮件
基于Velocity模板引擎发送邮件
如何获取以及运行我的Demo
Github地址:https://github.com/Snailclimb/J2ee-Advanced。(说明:相关代码都在ssm-echarts-demo 项目中)
你可以选择直接下载或者直接在DOS窗口运行: git clone https://github.com/Snailclimb/J2ee-Advanced.git命令,这样项目就被拷贝到你的电脑了。
然后选择导入Maven项目即可(不懂Maven的可以自行百度学习).
二 准备工作
既然要发送邮件,那么你首先要提供一个能在第三方软件上发送邮件功能的账号。在这里,我选择的网易邮箱账号。
我拿网易邮箱账号举例子,那么我们如何才能让你的邮箱账号可以利用第三方发送邮件(这里的第三方就是我们即将编写的程序)。
大家应该清楚:客户端和后台交互数据的时候用到了Http协议,那么相应的,邮箱传输也有自己的一套协议,如SMTP,POP3,IMAP。
开启POP3/SMTP/IMAP服务
所以,我们第一步首先要去开启这些服务,如下图所示:
如果你未开启该服务的话,运行程序会报如下错误(配置文件中配置的密码是你的授权码而不是你登录邮箱的密码,授权码是你第三方登录的凭证):HTTP Status 500 - Request processing failed; nested exception is org.springframework.mail.MailAuthenticationException: Authentication failed; nested exception is javax.mail.AuthenticationFailedException: 550 User has no permission
JavaMail介绍
我们需要用到的发邮件的核心jar包,所以这里好好介绍一下。
JavaMail是由Sun定义的一套收发电子邮件的API,不同的厂商可以提供自己的实现类。但它并没有包含在JDK中,而是作为JavaEE的一部分。厂商所提供的JavaMail服务程序可以有选择地实现某些邮件协议,常见的邮件协议包括:SMTP:简单邮件传输协议,用于发送电子邮件的传输协议;
POP3:用于接收电子邮件的标准协议;
IMAP:互联网消息协议,是POP3的替代协议。
这三种协议都有对应SSL加密传输的协议,分别是SMTPS,POP3S和IMAPS。
我们如果要使用JavaMail的话,需要自己引用相应的jar包,如下图所示: javax.mail mail 1.4.7
相关配置文件
下图是除了pom.xml之外用到的其他所有配置文件
pom.xml
需要用到的jar包。 org.springframework spring-context-support 5.0.0.RELEASE javax.mail mail 1.4.7 org.freemarker freemarker 2.3.23 org.apache.velocity velocity 1.7 org.apache.velocity velocity-tools 2.0
mail.properties#服务器主机名mail.smtp.host=smtp.163.com#你的邮箱地址mail.smtp.username=koushuangbwcx@163.com#你的授权码mail.smtp.password=cSdN153963000#编码格式mail.smtp.defaultEncoding=utf-8#