whycxzp
2023-11-02 5fa50709c50f1b288187380a915ff4e28d160aca
邮件发送失败处理
5个文件已修改
61 ■■■■■ 已修改文件
src/main/java/com/whyc/CadDrawManagerApplication.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/DocLogService.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/MailService.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/task/MailQueueTask.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/util/ActionUtil.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/CadDrawManagerApplication.java
@@ -9,7 +9,7 @@
@SpringBootApplication
@EnableWebMvc
@ServletComponentScan(basePackages = {"com.whyc.filter","com.whyc.servlet"})
@ServletComponentScan(basePackages = {"com.whyc.filter","com.whyc.servlet","com.whyc.listener"})
public class CadDrawManagerApplication extends WebMvcConfigurerAdapter implements WebMvcConfigurer {
    public static void main(String[] args) {
src/main/java/com/whyc/service/DocLogService.java
@@ -13,11 +13,9 @@
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Type;
import java.util.Date;
import java.util.List;
@@ -98,7 +96,14 @@
    public void record(long uId,String name, int operationType, String msg,String msgDetail) {
        DocLog docLog = new DocLog();
        docLog.setTerminalIp(ActionUtil.getRequest().getRemoteAddr());
        HttpServletRequest request = ActionUtil.getRequest();
        String remoteAddr;
        if(request!=null) {
            remoteAddr = request.getRemoteAddr();
        }else{
            remoteAddr = "127.0.0.1";
        }
        docLog.setTerminalIp(remoteAddr);
        docLog.setOprateDay(new Date());
        docLog.setId((int)(uId));
        docLog.setName(name);
src/main/java/com/whyc/service/MailService.java
@@ -7,6 +7,7 @@
import com.whyc.util.ActionUtil;
import com.whyc.util.MailUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.MailException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -32,24 +33,23 @@
    public Response sendMail(MailDTO mailDTO) {
        Long uId = ActionUtil.getUser().getId();
        String name=ActionUtil.getUser().getName();
        //日志内容准备
        StringBuilder mailUserStr = new StringBuilder();
        List<String> mailList = mailDTO.getMailList();
        for (int i = 0; i < mailList.size(); i++) {
            if(i==0){
                mailUserStr.append(mailList.get(i));
            }else{
                mailUserStr.append(","+mailList.get(i));
            }
        }
        try {
            mailUtil.sendMailBatch(name,mailDTO.getMailList(),mailDTO.getTitle(),mailDTO.getContent());
            //日志
            List<String> mailList = mailDTO.getMailList();
            for (int i = 0; i < mailList.size(); i++) {
                if(i==0){
                    mailUserStr.append(mailList.get(i));
                }else{
                    mailUserStr.append(","+mailList.get(i));
                }
            }
            String msgDetail = "发送给邮箱" + mailUserStr + ",标题为:" + mailDTO.getTitle() + ",内容为:" + mailDTO.getContent();
            logService.record(uId, name, UserOperation.TYPE_SEND_MAIL.getType(), "邮件发送", msgDetail);
            return new Response().set(1,true,"发送完成");
        } catch (MessagingException ex) { //邮件发送异常,存入数据库待重新发送列表
        } catch (MessagingException | MailException ex) { //邮件发送异常,存入数据库待重新发送列表
            MailQueue queue = new MailQueue();
            queue.setMails(mailUserStr.toString());
            queue.setTitle(mailDTO.getTitle());
@@ -75,8 +75,8 @@
            mailQueueService.deleteById(queue.getId());
            //日志
            String msgDetail = "发送给邮箱" + mails + ",标题为:" + queue.getTitle() + ",内容为:" + queue.getContent();
            logService.record(uId, name, UserOperation.TYPE_SEND_MAIL.getType(), "邮件发送", msgDetail);
        } catch (MessagingException ex) { //邮件发送异常
            logService.record(uId, name, UserOperation.TYPE_SEND_MAIL.getType(), "邮件因网络问题由系统延时发送", msgDetail);
        } catch (MessagingException | MailException ex) { //邮件发送异常
            //System.out.println("邮件发送异常,后续会持续发送直到成功");
        }
    }
src/main/java/com/whyc/task/MailQueueTask.java
@@ -20,11 +20,15 @@
    @Override
    public void run() {
        //查询邮件队列中的待发送列表
        List<MailQueue> sendingList = mailQueueService.getList();
        //发送邮件
        for (MailQueue queue : sendingList) {
            mailService.sendQueueMail(queue);
        try {
            //查询邮件队列中的待发送列表
            List<MailQueue> sendingList = mailQueueService.getList();
            //发送邮件
            for (MailQueue queue : sendingList) {
                mailService.sendQueueMail(queue);
            }
        }catch (Exception e){
            System.out.println("MailQueueTask发生异常:"+e.toString());
        }
    }
}
src/main/java/com/whyc/util/ActionUtil.java
@@ -34,8 +34,12 @@
     */
    public static HttpServletRequest getRequest(){
        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = requestAttributes.getRequest();
        return request;
        if(requestAttributes!=null) {
            HttpServletRequest request = requestAttributes.getRequest();
            return request;
        }else{
            return null;
        }
    }
    
    /*