接上一节,环境一样,这次来说另外两个任务,一个是定时任务,一个是发邮件。

 

1.定时任务

  定时任务可以设置精确到秒的准确时间去自动执行方法。

  我要一个程序每一秒钟说一句:java小新人最帅

  于是,我就写了一个方法,注解里cron里面的很多星星意思是:每个月、周一到周日 、每个小时、每一分、每一秒都执行一次这个方法。

springboot发送html格式邮件 springboot mail发邮件_html

 

  主配置类加个开启注解

springboot发送html格式邮件 springboot mail发邮件_html_02

 

  ok,可以了,直接启动应用,不需要浏览器,直接在控制台看到打印的消息:

springboot发送html格式邮件 springboot mail发邮件_发邮件_03

 

  所以我们要掌握的是@Scheduled注解中属性cron的表达式,大概的就是下图所示:

springboot发送html格式邮件 springboot mail发邮件_java_04

 

 

2.发邮件

  来测试一下用springboot发邮件,假如我用qq邮箱向一个老哥的网易邮箱发邮件,基本的逻辑就是:从qq邮箱---------->腾讯qq邮箱服务器------------>网易邮箱服务器-------------->163网易邮箱

  所以我们要配置的就是我们qq邮箱的账号密码

第一步:导入依赖

springboot发送html格式邮件 springboot mail发邮件_java_05

 

第二步:配置文件(看清楚stmp.qq.com这是SMTP服务器中qq邮件的主机地址,其他邮件有自己的STMP主机地址),最后的那个是建议ssl安全连接的,一定要开启

 

springboot发送html格式邮件 springboot mail发邮件_qq邮箱_06

 

  其中,qq邮箱得到授权码步骤如下:

springboot发送html格式邮件 springboot mail发邮件_java_07

springboot发送html格式邮件 springboot mail发邮件_html_08

springboot发送html格式邮件 springboot mail发邮件_发邮件_09

 

第三步:测试类

springboot发送html格式邮件 springboot mail发邮件_java_10

 

   运行测试方法,可以在网易云邮箱看到邮件:

springboot发送html格式邮件 springboot mail发邮件_html_11

 

 3.邮件的高级一点的功能(发邮件有附件)

 

springboot发送html格式邮件 springboot mail发邮件_qq邮箱_12

 

  运行这个测试方法:

springboot发送html格式邮件 springboot mail发邮件_html_13

springboot发送html格式邮件 springboot mail发邮件_java_14

 

4.再高级一点(用模板发送邮件)

激活邮件激活

  咳,记得不太清楚了,应该差不多,嘿嘿!话说难道每个人注册博客园都会用上面的发送html的方式,慢慢拼接html然后发送吗?其实这样也行,只是看起来太lower了,而且代码看起来会很凌乱。

  那今天我就用前面学的themeleaf给做个模板,来假装发发邮件,骗骗自己,嘿嘿~(●´∀`●)~

  首先导入themeleaf的依赖,指定themeleaf的版本

springboot发送html格式邮件 springboot mail发邮件_发邮件_15

springboot发送html格式邮件 springboot mail发邮件_html_16

 

  其实真正开发中,会把这个发邮件的方法写成一个类,传入一些参数就可以发送的,我们嘛,就怎么简单怎么来吧! 

springboot发送html格式邮件 springboot mail发邮件_qq邮箱_17

 

  themeleaf文件的位置和内容(不要忘记themeleaf的目录位置和用法了)

springboot发送html格式邮件 springboot mail发邮件_html_18

springboot发送html格式邮件 springboot mail发邮件_html_19

 

  点击激活账号,就会跳转到我的controller中的方法,如下:

springboot发送html格式邮件 springboot mail发邮件_html_20

 

  ok,到这里就可以了,记得,先运行springboot应用,然后运行测试方法,收到邮件,自己激活一下,然后就会跳转到

springboot发送html格式邮件 springboot mail发邮件_qq邮箱_21

springboot发送html格式邮件 springboot mail发邮件_qq邮箱_22

 

  成功跳转,于是你就激活成功了!

 

springboot发送html格式邮件 springboot mail发邮件_发邮件_23

 

5.可能出现的bug

   说说用模板可能会碰到的bug,哎,用了我好几个小时,现在我还是一副的心情。

  怎么回事呢?代码写了,看了好几遍也没错,就是运行就报错,在网上看了别人的代码拿过来还是报错,报错如下:

 

springboot发送html格式邮件 springboot mail发邮件_qq邮箱_24

springboot发送html格式邮件 springboot mail发邮件_qq邮箱_25

springboot发送html格式邮件 springboot mail发邮件_html_26

 

  这个错误大概意思就是我的模板的html中每个标签都要是闭标签,要这种类型的<a></a>,假如是<img xxx>这种标签就会报错。

  如下所示,最坑的方法就是修改的,而且以后html的标签都要是一对一对的,坑啊、、、

springboot发送html格式邮件 springboot mail发邮件_qq邮箱_27

  

  后来有找了很多资料,原来发现是这里,themeleaf默认应该是2.xx版本,这个版本解析标签都要是一对一对的,到了3.xx之后,就不需要这么麻烦了!

springboot发送html格式邮件 springboot mail发邮件_qq邮箱_28