异常处理邮件发送1. 邮件发送⼯具类
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import io.FileSystemResource;
立春节气的特点和风俗import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.MessagingException;看着天边死在眼前是什么歌
import javax.mail.internet.MimeMessage;
import java.io.File;
@Service
public class MailService {
@Autowired
private JavaMailSender sender;
@Value("${spring.mail.from}")
private String from;
/**
* 发送纯⽂本的简单邮件
* @param to
* @param subject
* @param content
*/
public void sendSimpleMail(String to, String subject, String content){
SimpleMailMessage message =new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
//message.setCc(from1,from2,from3,from4,from5);//抄送邮件接收⼈
message.setSubject(subject);
message.setText(content);高考满分900
sender.send(message);
}
/**
嘉年华多少钱
* 发送html格式的邮件
* @param to
* @param subject
* @param content
*/
public void sendHtmlMail(String to, String subject, String content){
MimeMessage message = ateMimeMessage();
try{
//true表⽰需要创建⼀个multipart message
MimeMessageHelper helper =new MimeMessageHelper(message,true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content,true);
sender.send(message);
}catch(MessagingException e){
}
}
/**
* 发送带附件的邮件
* @param to
* @param to
* @param subject
* @param content
* @param filePath
*/
public void sendAttachmentsMail(String to, String subject, String content, String filePath){
MimeMessage message = ateMimeMessage();
try{
//true表⽰需要创建⼀个multipart message
MimeMessageHelper helper =new MimeMessageHelper(message,true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content,true);
FileSystemResource file =new FileSystemResource(new File(filePath));
String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
helper.addAttachment(fileName, file);
sender.send(message);
}catch(MessagingException e){
}
}
/**
* 发送嵌⼊静态资源(⼀般是图⽚)的邮件
* @param to
* @param subject
ab型血人的性格特点* @param content 邮件内容,需要包括⼀个静态资源的id,⽐如:<img src=\"cid:rscId01\" >
游戏输入法* @param rscPath 静态资源路径和⽂件名
* @param rscId 静态资源id
*/
public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId){ MimeMessage message = ateMimeMessage();
try{
//true表⽰需要创建⼀个multipart message
MimeMessageHelper helper =new MimeMessageHelper(message,true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content,true);
FileSystemResource res =new FileSystemResource(new File(rscPath));
helper.addInline(rscId, res);
sender.send(message);
}catch(MessagingException e){
}
}
}
2. 基础字段配置
mail:
host: smtp.qq #发送邮件服务器
username:2769900781@qq #发送邮件的邮箱地址
password: pvqvouddlkhjiuuyf #客户端授权码,不是邮箱密码,这个在qq邮箱设置⾥⾯⾃动⽣成的
properties.mail.smtp.port:465 #端⼝号465或587
from:2769900781@qq # 发送邮件的地址,和上⾯username⼀致可以任意
properties.mail.able:true
properties.mail.quired:true
properties.mail.able:true
default-encoding: utf-8
3. maven包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
4. 拦截类
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.t.request.WebRequest;
import org.springframework.web.hod.annotation.ResponseEntityExceptionHandler;
import top.cfl.cflwork.pojo.ResponseJson;
import top.cfl.cflwork.pojo.SysExceptionEmail;
import top.cfl.cflwork.service.SysExceptionEmailService;
import top.cfl.ail.MailService;
import javax.servlet.http.HttpServletRequest;
import java.io.PrintWriter;
import java.io.StringWriter;
@ControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
@Autowired
private MailService mailService;
@Value("${spring.mail.username}")
private String email;
@Autowired
private SysExceptionEmailService sysExceptionEmailService;
/**
* 在controller⾥⾯内容执⾏之前,校验⼀些参数不匹配啊,Get post⽅法不对啊之类的
*/
@Override
protected ResponseEntity<Object>handleExceptionInternal(Exception ex, Object body, HttpHeaders headers, HttpStatus status, WebRequest request){ String content ="接⼝地址:"+request+",状态码:"+status+",异常信息:"+ex;
mailService.sendSimpleMail(email,"异常", content);//发送邮件
String(),ex.toString(),String());//持久化
return new ResponseEntity<>("出错了", HttpStatus.NOT_EXTENDED);
}
/**
* 程序异常
* @param request
* @param e
* @return
* @throws Exception
*/
@ExceptionHandler(value = Exception.class)
@ResponseBody
public ResponseJson jsonHandler(HttpServletRequest request, Exception e)throws Exception {
StringWriter sw =new StringWriter();
PrintWriter pw =new PrintWriter(sw);
e.printStackTrace(pw);
//发送邮件
mailService.sendSimpleMail(email,"异常","请求地址:"+ RequestURL()+",异常信息:"+sw.toString());
mailService.sendSimpleMail(email,"异常","请求地址:"+ RequestURL()+",异常信息:"+sw.toString());
RequestURL().toString(),sw.toString(),null);//持久化
return new ResponseJson(false,"服务器异常");
}
public void saveExceptionEmail(String url,String content,String status){
SysExceptionEmail sysExceptionEmail =new SysExceptionEmail();
sysExceptionEmail.setUrl(url);
sysExceptionEmail.setContent(content);
sysExceptionEmail.setStatus(status);
sysExceptionEmailService.saveSysExceptionEmail(sysExceptionEmail);
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论