异步线程:一次性发送大量邮件

1.邮件发送接口(伪代码):

      public void toSendMsg(HttpServletRequest request, HttpServletResponse response) {
            //1.校验是否为非法请求
            //xxx
            //2.接收参数
              String emails = request.getParameter("emails");//多封邮件(可接收分隔符拼接的emails,也可以选择接受email数组)
              String emailContent = request.getParameter("emailContent");//邮件的固定格式内容
             // ...
                try {                    
                        new  SendEmailThread(email,emailContent).start(); //实例化发送邮件的线程。此处可以用局部内部类或者java8的lambda代替第二步,不过上面的局部变量要用final修饰                                          
                        //操作间隔时间限制
                        //xxx                                    
                } catch (Exception e) 
                    e.printStackTrace();
                } finally {
                    //xxx
                }
            }

2.构建线程对象

    class SendEmailThread extends Thread{    
                private String emails;
                private String emailContent;
                SendEmailThread(String emails,String emailContent){
                    this.emails=emails;
                    this.emailContent=emailContent;
                }
                public void run(){
                        try {
                            sendEmail(emails,emailContent);//将参数传入负责执行发送逻辑的方法
                        }catch (Exception e) {
                            e.printStackTrace();
                        }
                }
            }

3.发送逻辑方法sendEmail

//此处根据自己的业务逻辑自行设计,可将邮件及其内容写入redis队列,或者有MQ软件环境的写入MQ,再用定时任务进行发送。发送之后将发送结果写入数据库或者logger记录,方便查询发送是否成功。具体实现待发布
原文地址:https://www.cnblogs.com/lhc-hhh/p/13177015.html