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记录,方便查询发送是否成功。具体实现待发布