SpringBoot进阶邮件服务(实战模拟邮箱注册含源码)

阅读:953 2019-03-20 14:09:02 来源:新网

分析

工作中难免会用到邮箱服务,这里整理了五种邮件发送模式:发送文本邮件,发送html邮件,发送附件邮件,发送内联资源邮件,发送模板邮件。以供大家学习参考。最后实战部分模拟邮箱注册含源码。

看一下图(有图有真相)

提前准备

pom.xml配置

org.springframework.bootspring-boot-starter-mail

application.properties中添加邮箱配置

#邮箱服务器地址spring.mail.protocol=smtpspring.mail.host=smtp.qq.com#邮箱服务器地址spring.mail.username=************@qq.com#邮箱密码spring.mail.password=***********spring.mail.default-encoding=utf-8spring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.smtp.starttls.enable=truespring.mail.properties.mail.smtp.starttls.required=true

注意:若是qqspring.mail.password=qq授权码,需要开启qq授权码

发送简单文本邮件

@runwith(springrunner.class)@springboottestpublicclassemailtests{@autowiredprivatejavamailsenderjavamailsender;@autowiredprivatetemplateenginetemplateengine;//读取配置文件中的参数@value("${spring.mail.username}")privatestringsender;privatestaticfinalstringrecipient="*************@163.com";/***发送简单文本邮件*/@testpublicvoidsendsimpleemail(){simplemailmessagemessage=newsimplemailmessage();//发送者message.setfrom(sender);//接收者message.setto(recipient);//邮件主题message.setsubject("主题:文本邮件");//邮件内容message.settext("骚扰邮件勿回");javamailsender.send(message);}}

发送html邮件

新增发送html邮件测试方法

/***发送html邮件*/@testpublicvoidsendhtmlemail(){mimemessagemessage=javamailsender.createmimemessage();try{mimemessagehelperhelper=newmimemessagehelper(message,true);helper.setfrom(sender);helper.setto(recipient);helper.setsubject("主题:html邮件");stringbuffersb=newstringbuffer();sb.append("

大标题-h1

").append("红色字

").append("右对齐

");helper.settext(sb.tostring(),true);}catch(messagingexceptione){thrownewruntimeexception("messagingexception!",e);}javamailsender.send(message);}

发送内联资源邮件

新增发送内联资源邮件测试方法

/***发送内联资源邮件*/@testpublicvoidsendinlineresourcemail(){mimemessagemessage=javamailsender.createmimemessage();try{mimemessagehelperhelper=newmimemessagehelper(message,true);helper.setfrom(sender);helper.setto(recipient);helper.setsubject("主题:这是有图片的邮件");stringimgid="avatar";stringcontent="宫崎骏电影图片:";helper.settext(content,true);filesystemresourceres=newfilesystemresource(newfile("src/main/resources/static/images/avatar.jpg"));helper.addinline(imgid,res);}catch(messagingexceptione){thrownewruntimeexception("messagingexception!",e);}javamailsender.send(message);}

发送模板邮件重点

pom中导入thymeleaf的包

org.springframework.bootspring-boot-starter-thymeleaf

新增模板emailtemplate.html

javazhan验证邮件您好,这是验证邮件,请点击下面的链接完成验证,激活账号。

新增发送模板邮件测试方法

/***发送模板邮件*/@testpublicvoidsendtemplatemail(){mimemessagemessage=javamailsender.createmimemessage();try{mimemessagehelperhelper=newmimemessagehelper(message,true);helper.setfrom(sender);helper.setto(recipient);helper.setsubject("主题:模板邮件");contextcontext=newcontext();context.setvariable("id","wenter");stringemailcontent=templateengine.process("emailtemplate",context);helper.settext(emailcontent,true);}catch(messagingexceptione){thrownewruntimeexception("messagingexception!",e);}javamailsender.send(message);}

注:很多时候邮采用异步的方式来发送邮件,加快主交易执行速度,在实际项目中可以采用mq发送邮件相关参数,监听到消息队列之后启动发送邮件。

实战部分模拟邮箱注册很多网站都支持邮箱注册,以下将实现邮箱注册功能:支持登录,注册,激活,重置密码。

效果如图

注册成功

未激活登录

激活邮件去激活

激活后,登录成功

重置密码

重置密码邮件

输入之前的密码登陆

输入重置密码登陆

错误邮箱提示

代码

引入架包,修改pom.xml

org.springframework.bootspring-boot-starterorg.springframework.bootspring-boot-starter-testtestorg.springframework.bootspring-boot-devtoolstrueorg.springframeworkspring-context-supportreleaseorg.springframework.bootspring-boot-starter-thymeleaforg.springframework.bootspring-boot-starter-mailorg.springframework.bootspring-boot-starter-webcom.google.code.gsongson2.8.2

新建实体类user.java与requestdata.java略了(看代码)

导入静态资源css/js/….

编写js

$("#js-btn").click(function(){vardata={};varname=$("#js-btn").attr('class');varurl="";if(name.indexof("rtn")>0){data.useremail=$("#js-field__email").val();data.userpass=$("#js-field__pass").val();url="/user/login";}elseif(name.indexof("new")>0){data.useremail=$("#js-field__email").val();data.userpass=$("#js-field__pass").val();data.userrepass=$("#js-field__r-pass").val();url="/user/register";}elseif(name.indexof("rst")>0){data.useremail=$("#js-field__email").val();url="/user/forget";}submit(data,url);});functionsubmit(data,url){$.ajax({cache:!1,type:"post",url:url,data:data,async:!0,beforesend:function(){$("#js-btn").html("提交中..."),$("#js-btn").attr("disabled","disabled")},success:function(data){varresult=jquery.parsejson(data);layer.alert(result.message);},complete:function(){$("#js-btn").html("success"),$("#js-btn").removeattr("disabled")}})}

编写controler

/***createdbyyandoon2017/11/22.*/@restcontroller@requestmapping(value="user")publicclassusercontroller{@autowiredprivatejavamailsenderjavamailsender;@autowiredprivatetemplateenginetemplateengine;@value("${spring.mail.username}")privatestringsender;privaterequestdatarequestdata=newrequestdata();publicstaticmapmap=newhashmap();@requestmapping(value="login",method=requestmethod.post)publicstringlogin(useruser){for(useru:map.values()){if(u!=null&&u.getuserpass().equals(user.getuserpass())&&u.getuseremail().equals(user.getuseremail())){if(u.getstate()==0){requestdata.setcode("9999");requestdata.setstate("500");requestdata.setmessage("请前往"+user.getuseremail()+"邮箱激活");returnnewgson().tojson(requestdata);}requestdata.setmessage("登录成功");returnnewgson().tojson(requestdata);}}requestdata.setcode("9999");requestdata.setstate("500");requestdata.setmessage("邮箱或者密码错误");returnnewgson().tojson(requestdata);}@requestmapping(value="register",method=requestmethod.post)publicstringregister(useruser){map.put(user.getuserid(),user);//发送注册邮件sendtemplatemail(user.getuseremail(),user.getuserid());requestdata.setmessage("注册成功,快去激活");returnnewgson().tojson(requestdata);}@requestmapping(value="forget",method=requestmethod.post)publicstringforget(useruser){for(useru:map.values()){if(u!=null||u.getuseremail()==user.getuseremail()){u.setuserpass("6666");map.remove(u.getuserid());map.put(u.getuserid(),u);requestdata.setmessage("密码已经重置,快去查看你的邮箱");sendsimpleemail(u.getuseremail(),"您好,您密码已重置,初始密码:6666,为了你的安全请尽快修改密码。");returnnewgson().tojson(requestdata);}}requestdata.setcode("9999");requestdata.setstate("500");requestdata.setmessage("无效邮箱");returnnewgson().tojson(requestdata);}@requestmapping(value="activation/{userid}",method=requestmethod.get)publicvoidactivation(@pathvariablestringuserid,httpservletresponseresponse)throwsioexception{useruser=map.get(userid);if(user!=null){user.setstate(1);map.remove(user.getuserid());map.put(user.getuserid(),user);}response.sendredirect("../../login.html");}publicvoidsendsimpleemail(stringrecipient,stringtext){simplemailmessagemessage=newsimplemailmessage();//发送者message.setfrom(sender);//接收者message.setto(recipient);//邮件主题message.setsubject("java资源分享网密码重置邮件");//邮件内容message.settext(text);javamailsender.send(message);}publicvoidsendtemplatemail(stringrecipient,stringuserid){mimemessagemessage=javamailsender.createmimemessage();try{mimemessagehelperhelper=newmimemessagehelper(message,true);helper.setfrom(sender);helper.setto(recipient);helper.setsubject("java资源分享网验证邮件");contextcontext=newcontext();context.setvariable("id",userid);stringemailcontent=templateengine.process("emailtemplate",context);helper.settext(emailcontent,true);}catch(messagingexceptione){thrownewruntimeexception("messagingexception!",e);}javamailsender.send(message);}}

结束了

执行runapplication.java,看效果吧。

请测试邮件用自己的不要给博主造成不必要的影响谢谢

源码下载

springboot进阶邮件服务(实战模拟邮箱注册含源码)

下一篇: java实现邮件发送
相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>
推荐商标

{{ v.name }}

{{ v.cls }}类

立即购买 联系客服