SpringBoot拦截全局异常并发送邮件给指定邮箱

阅读:910 2019-03-20 14:09:47 来源:新网

主要是看一下springboot中发送邮件的方法,至于拦截springboot全局异常之前的文章中有。

在springboot中发送邮件非常简单。

pom.xml引入maven依赖

org.springframework.bootspring-boot-starter-mail在application.yml里设置发信人的账号、密码

spring:mail:host:smtp.qq.comusername:27255xxxx@qq.compassword:njcvcbdkrofgbhieproperties:mail:smtp:auth:truestarttls:enable:truerequired:true这个username就是未来发信时的邮箱地址,password是授权码。

这里以普通qq邮箱为例,注意password不是qq密码,而是授权码。

在qq邮箱-设置-账户,找到图片中的地方,开启imap/smtp服务,开启后才能在别的客户端使用该qq邮箱发邮件,然后生成授权码,填写到application.yml的password位置。

然后就可以使用该邮箱作为发件人了。

看一下发邮件的具体代码,参考http://blog.csdn.net/clementad/article/details/51833416

packagecom.tianyalei.testmail.service;importorg.slf4j.logger;importorg.slf4j.loggerfactory;importorg.springframework.beans.factory.annotation.autowired;importorg.springframework.beans.factory.annotation.value;importorg.springframework.core.io.filesystemresource;importorg.springframework.mail.simplemailmessage;importorg.springframework.mail.javamail.javamailsender;importorg.springframework.mail.javamail.mimemessagehelper;importorg.springframework.stereotype.service;importjavax.mail.messagingexception;importjavax.mail.internet.mimemessage;importjava.io.file;@servicepublicclassmailservice{privatefinalloggerlogger=loggerfactory.getlogger(this.getclass());@autowiredprivatejavamailsendersender;@value("${spring.mail.username}")privatestringfrom;/***发送纯文本的简单邮件*@paramto*@paramsubject*@paramcontent*/publicvoidsendsimplemail(stringto,stringsubject,stringcontent){simplemailmessagemessage=newsimplemailmessage();message.setfrom(from);message.setto(to);message.setsubject(subject);message.settext(content);try{sender.send(message);logger.info("简单邮件已经发送。");}catch(exceptione){logger.error("发送简单邮件时发生异常!",e);}}/***发送html格式的邮件*@paramto*@paramsubject*@paramcontent*/publicvoidsendhtmlmail(stringto,stringsubject,stringcontent){mimemessagemessage=sender.createmimemessage();try{//true表示需要创建一个multipartmessagemimemessagehelperhelper=newmimemessagehelper(message,true);helper.setfrom(from);helper.setto(to);helper.setsubject(subject);helper.settext(content,true);sender.send(message);logger.info("html邮件已经发送。");}catch(messagingexceptione){logger.error("发送html邮件时发生异常!",e);}}/***发送带附件的邮件*@paramto*@paramsubject*@paramcontent*@paramfilepath*/publicvoidsendattachmentsmail(stringto,stringsubject,stringcontent,stringfilepath){mimemessagemessage=sender.createmimemessage();try{//true表示需要创建一个multipartmessagemimemessagehelperhelper=newmimemessagehelper(message,true);helper.setfrom(from);helper.setto(to);helper.setsubject(subject);helper.settext(content,true);filesystemresourcefile=newfilesystemresource(newfile(filepath));stringfilename=filepath.substring(filepath.lastindexof(file.separator));helper.addattachment(filename,file);sender.send(message);logger.info("带附件的邮件已经发送。");}catch(messagingexceptione){logger.error("发送带附件的邮件时发生异常!",e);}}/***发送嵌入静态资源(一般是图片)的邮件*@paramto*@paramsubject*@paramcontent邮件内容,需要包括一个静态资源的id,比如:*@paramrscpath静态资源路径和文件名*@paramrscid静态资源id*/publicvoidsendinlineresourcemail(stringto,stringsubject,stringcontent,stringrscpath,stringrscid){mimemessagemessage=sender.createmimemessage();try{//true表示需要创建一个multipartmessagemimemessagehelperhelper=newmimemessagehelper(message,true);helper.setfrom(from);helper.setto(to);helper.setsubject(subject);helper.settext(content,true);filesystemresourceres=newfilesystemresource(newfile(rscpath));helper.addinline(rscid,res);sender.send(message);logger.info("嵌入静态资源的邮件已经发送。");}catch(messagingexceptione){logger.error("发送嵌入静态资源的邮件时发生异常!",e);}}}然后就可以使用里面的方法发邮件了。

可以先写个简单的测试类,调用

mailservice.sendsimplemail("wuweifeng@xxx.com","主题:简单邮件","测试邮件内容");填写个收信人的地址就ok了。然后就能收到邮件了。收信人可以有多个,通过simplemailmessage可以看到。二拦截全局异常并发邮件

相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>
推荐商标

{{ v.name }}

{{ v.cls }}类

立即购买 联系客服