1.前端页面--form表单提交,通过发送按钮的id=“send”定位DOM,触发ajax请求

  1. <form class="form-horizontal" id="emailEdit" style="display: none;margin: 40px;">
  2. <%--收件人--%>
  3. <div class="form-group">
  4. <label for="emailer" class="col-sm-2 control-label" >收件人</label>
  5. <div class="col-sm-10" style="width: 82%" >
  6. <textarea class="form-control" rows="3" name="emailer" id="emailer" placeholder="多个收件人,请以,隔开"></textarea>
  7. </div>
  8. </div>
  9. <%--邮件标题--%>
  10. <div class="form-group" >
  11. <label for="taskName" class="col-sm-2 control-label">邮件标题</label>
  12. <div class="col-sm-10" style="width: 82%" >
  13. <input type="text" class="form-control" name="emailTitle" id="emailTitle" placeholder="邮件标题">
  14. </div>
  15. </div>
  16. <%--正文--%>
  17. <div class="form-group" >
  18. <label for="accdescription" class="col-sm-2 control-label">正文</label>
  19. <div class="col-sm-10" style="width: 82%" >
  20. <textarea class="form-control" rows="10" name="emailContent" id="emailContent" placeholder="邮件正文"></textarea>
  21. </div>
  22. </div>
  23. <div class="form-group" style="float: right;margin-right: 40px;margin-top: 30px">
  24. <div class="col-sm-offset-2 col-sm-10" >
  25. <button type="button" class="btn btn-success" id="send" style="background-color: #FF8C00" >发送</button>
  26. </div>
  27. </div>
  28. </form>

2.ajax请求

formCheckClean清除校验格式的函数

checkparam() 校验输入非空,以及邮箱格式是否正确的函数

 通过发送按钮的id--send的点击事件,触发ajax请求 

  1. var index11;
  2. function formCheckClean(){
  3. $('.text-danger').remove();//首先清除提示的标签
  4. $("*").removeClass('has-error');//清除has-error错误样式
  5. }//校验样式清除函数
  6.     //邮箱非空校验及格式校验函数
  7. function checkparam(){
  8. var flag=true;
  9. var emailer=$("#emailer").val();
  10. var emailTitle=$("#emailTitle").val();
  11. if(emailer == null || emailer == ""){
  12. $("#emailer").parent().parent().addClass('form-group has-error');
  13. $("#emailer").parent().after('<label class="control-label text-danger" style="display:block;float: right;color: red"><i class="fa fa-times-circle-o"></i> 必填项不能为空!</label>');
  14. flag=false;
  15. }else{
  16. reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
  17. var strList=emailer.split(",");
  18. var errorcount =0;
  19. var errormail ="";
  20. for(i=0;i<strList.length;i++){
  21. if(!reg.test(strList[i])){
  22. errormail=errormail+strList[i]+';';
  23. errorcount++;
  24. }
  25. }
  26. if(errorcount >=1){
  27. // console.log("不符合要求的邮箱个数:"+errorcount);
  28. $("#emailer").parent().parent().addClass('form-group has-error');
  29. $("#emailer").parent().after('<label class="control-label text-danger" style="display:block;float: right;color: red"><i class="fa fa-times-circle-o"></i>'+'错误邮箱:'+errormail+'</label>');
  30. flag=false;
  31. }
  32. }
  33. if(emailTitle == null || emailTitle == ""){
  34. $("#emailTitle").parent().parent().addClass('form-group has-error');
  35. $("#emailTitle").parent().after('<label class="control-label text-danger" style="display:block;float: right;color: red"><i class="fa fa-times-circle-o"></i> 必填项不能为空!</label>');
  36. flag=false;
  37. }
  38. return flag;
  39. }
  40. //发送邮件函数
  41. $("button#send").unbind("click").click(function(){
  42. formCheckClean();
  43. var flag=checkparam();
  44. var reg=new RegExp("\n","g"); //创建正则RegExp对象
  45. eContent=$("#emailContent").val().replace(reg,"<br/>");
  46. if(flag == true){
  47. document.getElementById("send").innerHTML = "发送中...";
  48. // $("#send").text("发送中...");
  49. $.ajax({
  50. type : "post",
  51. url : "/accident/SendEditEmail.do",
  52. dataType:"json",
  53. data: {"emailer":$("#emailer").val(),"emailTitle":$("#emailTitle").val(),"emailContent":eContent},
  54. async : false,
  55. success:function (data){
  56. document.getElementById("send").innerHTML = "发送";
  57. if(data= "ture"){
  58. layer.alert("发送成功!", {icon: 6,skin: 'layui-layer-lan',});
  59. layer.close(index11)//关闭弹层
  60. $("#functontestform").find('input[type=text],select,input[type=date],textarea').each(function() {
  61. $(this).val('');
  62. });//清空form表单并查询
  63. $('#functionTestSelectTable').bootstrapTable('refresh');
  64. }else {
  65. layer.msg("发送失败,请稍后重试", {icon: 5,skin: 'layui-layer-lan',});
  66. }
  67. }//success end
  68.  
  69. });//ajax end
  70. }
  71. });

3.在controller中写发邮件的逻辑,获取前端ajax请求传来的参数,调用SendMail类中的sendMail函数,并传参

  1. /**
  2. * 发送邮件编辑
  3. *
  4. * @param response
  5. * @return
  6. * @throws Exception
  7. * @param: request
  8. */
  9. @RequestMapping(value = "/SendEditEmail.do")
  10. @ResponseBody
  11. public String SendEditEmail(@Valid @ModelAttribute("accident") Accident accident, BindingResult br,
  12. Model model, HttpServletRequest req, HttpServletResponse response) throws Exception {
  13. response.setContentType("text/html;charset=utf-8");
  14. req.setCharacterEncoding("utf-8");
  15. //收件人
  16. String emailer = req.getParameter("emailer").trim();
  17. //邮件标题
  18. String emailTitle = req.getParameter("emailTitle").trim();
  19. //邮件内容
  20. String emailContent = req.getParameter("emailContent").trim();
  21. //处理文件内容使用
  22. ArrayList<String> list = new ArrayList<>();
  23. System.out.println(emailContent);
  24. //发送邮件
  25. String status="false";
  26. if(emailer != "" && emailTitle != "" && emailContent != "")
  27. {
  28. List emailerList = new ArrayList();//不能使用string类型的类型,这样只能发送一个收件人
  29. String []median=emailer.split(",");//对输入的多个邮件进行逗号分割
  30. for(int i=0;i<median.length;i++){
  31. emailerList.add(new InternetAddress(median[i]));
  32. }
  33. InternetAddress[] address =(InternetAddress[])emailerList.toArray(new InternetAddress[emailerList.size()]);
  34. // System.out.println("收件人所在数组-----"+address);
  35. for(int i=0;i<address.length;i++){
  36. status=SendMail.sendMail(address[i],emailTitle,emailContent);
  37. }
  38. }
  39. return status;
  40. }

4.在这之前需要配置邮箱信息 ------global.properties

  1. #设置邮箱服务器
    mailHost=smtp.163.com
  2. #设置邮箱端口号
  3. mailPort=25
  4. #设置邮箱服务器的用户名
  5. mailUsername=aaaa@163.com
  6. #授权码(注意不是邮箱登录密码)
  7. mailPassword=BMT856
  8. #设置超时时间
  9. mailTimeout=25000
  10. #设置发件人
  11. mailFrom=aaaa@163.com

5.开发获取配置文件的工具类

  1. package luckyweb.seagull.util;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.util.Properties;
  5.  
  6. /**
  7. * @author lw
  8. * @createTime 2018/6/25 15:27
  9. * @description 获取配置文件类
  10. */
  11. public class ProUtil {
  12. private static final String PROPERTIES_DEFAULT = "global.properties";
  13. public static String host;
  14. public static Integer port;
  15. public static String userName;
  16. public static String passWord;
  17. public static String emailForm;
  18. public static String timeout;
  19. public static String personal;
  20. public static Properties properties;/**
  21. * 初始化
  22. */
  23. private static void init() {
  24. properties = new Properties();
  25. try {
  26. InputStream inputStream = ProUtil.class.getClassLoader().getResourceAsStream(PROPERTIES_DEFAULT);
  27. properties.load(inputStream);
  28. inputStream.close();
  29. //properties.setProperty("mailFrom","cuizhixiang@feitu.biz");
  30. host = properties.getProperty("mailHost");
  31. port = Integer.parseInt(properties.getProperty("mailPort"));
  32. userName = properties.getProperty("mailUsername");
  33. passWord = properties.getProperty("mailPassword");
  34. emailForm = properties.getProperty("mailFrom");
  35. timeout = properties.getProperty("mailTimeout");
  36. personal = "测试部";//发件人的别名
  37. } catch (IOException e) {
  38. e.printStackTrace();
  39. }
  40. }
  41. }

6.开发发送邮件的实现类

  1. package luckyweb.seagull.util;
  2.  
  3. import org.springframework.mail.javamail.JavaMailSenderImpl;
  4. import org.springframework.mail.javamail.MimeMessageHelper;
  5.  
  6. import javax.mail.MessagingException;
  7. import javax.mail.internet.InternetAddress;
  8. import javax.mail.internet.MimeMessage;
  9. import java.io.UnsupportedEncodingException;
  10. import java.util.Properties;
  11.  
  12. /**
  13. * @author lw
  14. * @createTime 2018/6/25 15:24
  15. * @description 服务端邮件类
  16. */
  17. public class SendMail {
  18. private static final String HOST = ProUtil.host;
  19. private static final Integer PORT = ProUtil.port;
  20. private static final String USERNAME = ProUtil.userName;
  21. private static final String PASSWORD = ProUtil.passWord;
  22. private static final String emailForm = ProUtil.emailForm;
  23. private static final String timeout = ProUtil.timeout;
  24. private static final String personal = ProUtil.personal;
  25. private static JavaMailSenderImpl mailSender = createMailSender();
  26. private SendMail(){}
  27. /**
  28. * 邮件发送器
  29. *
  30. * @return 配置信息工具
  31. */
  32. private static JavaMailSenderImpl createMailSender() {
  33. JavaMailSenderImpl sender = new JavaMailSenderImpl();
  34. sender.setHost(HOST);
  35. sender.setPort(PORT);
  36. sender.setUsername(USERNAME);
  37. sender.setPassword(PASSWORD);
  38. sender.setDefaultEncoding("Utf-8");
  39. Properties p = new Properties();
  40. p.setProperty("mail.smtp.timeout", timeout);
  41. p.setProperty("mail.smtp.auth", "true");
  42. sender.setJavaMailProperties(p);
  43. return sender;
  44. }
  45.  
  46. /**
  47. * 发送邮件
  48. *
  49. * @param to 接受人
  50. * @param subject 主题
  51. * @param html 发送内容
  52. * @throws :MessagingException 异常
  53. * @throws :UnsupportedEncodingException 异常
  54. */
  55. public static String sendMail(InternetAddress to, String subject, String html) throws MessagingException,UnsupportedEncodingException {
  56. MimeMessage mimeMessage = mailSender.createMimeMessage();
  57. // 设置utf-8或UTF-8编码,否则邮件会有乱码
  58. MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
  59. messageHelper.setFrom(emailForm, personal);
  60. messageHelper.setTo(to);
  61. messageHelper.setSubject(subject);
  62. messageHelper.setText(html, true);
  63. mailSender.send(mimeMessage);
  64. return "true" ;
  65. }
  66.  
  67. public static void main(String[] args) {
  68. String ss = "项目名称: 合肥通 事故状态: 跟踪处理完成 事故等级: 五级及以下事故 发生时间: 2018-06-11 13:52:42 事故原因类型: 紧急上线-未测试 事故描述: 线上事故 事故原因分析: 事故原因分析 受影响范围: 受影响范围 纠正处理过程: 纠正处理过程" +
  69. "(需点名责任人) 解决时间: 2018-06-11 13:53:25 事故汇报人: 张美丽";
  70. for (int i = 0; i < ss.length(); i++) {
  71. if(ss.equals(":"))
  72. break;
  73. String new_ss =ss.replace(" ","<br>");
  74. System.out.print(new_ss);
  75. }
  76. /* String subject = "html邮件测试"; // subject javamail自动转码
  77.  
  78. StringBuffer theMessage = new StringBuffer();
  79. theMessage.append("<h2><font color=red>加油</font></h2>");
  80. theMessage.append("<hr>");
  81. theMessage.append("<i>美丽的开始</i>");
  82. theMessage.append("<table border='1'><tr><td>aaa</td><td>bbb</td></tr><tr><td>ccc</td><td>ddd</td></tr></table>");
  83.  
  84. try {
  85. SendMail.sendMail("357712148@qq.com",subject,theMessage.toString());
  86. } catch (MessagingException e) {
  87. e.printStackTrace();
  88. } catch (UnsupportedEncodingException e) {
  89. e.printStackTrace();
  90. }
  91. System.out.println("运行结果!!");*/
  92. }
  93. }

到此大功告成,支持发送多人,用,隔开。


  1.   

Spring mvc +ajax 发送邮件的更多相关文章

  1. spring mvc ajax 提交复杂数组类型

    The server refused this request because the request entity is in a format not supported by the reque ...

  2. spring mvc ajax异步文件的上传和普通文件上传

    表单提交方式文件上传和ajax异步文件上传 一:首先是我在spring mvc下的表单提交方式上传 ssm的包配置我就不一一详细列出来了,但是上传的包我还是列出来 这一段我也不知道怎么给大家讲解就是直 ...

  3. Spring MVC+ajax进行信息验证

    本文是一个ajax结合Spring MVC使用的入门,首先我们来了解一下什么是Ajax AJAX 不是新的编程语言,而是一种使用现有标准的新方法.AJAX 最大的优点是在不重新加载整个页面的情况下,可 ...

  4. spring mvc ajax请求

    jar包中增加 jackson-annotations-2.5.0.jar jackson-core-2.5.0.jar jackson-databind-2.5.0.jar springmvx.xm ...

  5. Spring MVC ajax:post/get 的具体实现

    Post 方式 1.自动注入 a. pom.xml ---- 配置Maven,添加必要的jar包 <!--用于 String-JSONObject 转换 --> <dependenc ...

  6. spring mvc ajax 400解决

    The request sent by the client was syntactically incorrect. ajax发起请求时报400错误.请求代码如下: var reportId=($( ...

  7. spring mvc ajax返回值乱码

    加入如下配置: <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHan ...

  8. spring mvc+ajax分页

    分页大致思路:页面每次把当前页传到后台并获得从后台传过来的json数据,解析后布局到这个页面上. 1.服务端代码: @Controller public class MemcachedContrlle ...

  9. spring mvc ajax

    <%@ page contentType="text/html;charset=UTF-8" %> <%@ include file="/WEB-INF ...

随机推荐

  1. 关于创建Django表单Forms继承BaseForm的问题

    在创建Django表单时,因为需要验证用户输入的验证码是否正确,因此需要在session里提取当前验证码的值和POST提交过来的值进行比对,如图: form.py from django import ...

  2. js 数组中如何删除字典

    区别: []表示是一个数组,如var strs = ['a','b','c'].{}表示是一个对象,比如,var obj = {name: '宙斯',sex: 1} 如何在数组中删除指定对象呢?? [ ...

  3. jQuery模拟键盘打字逐字逐句显示文本

    jQuery模拟键盘打字逐字逐句显示文本 html代码 <!doctype html> <html lang="zh"> <head> < ...

  4. 定时器 间隔调用setInterval

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 使用jQuery快速高效制作网页交互特效---jQuery选择器

    一.什么是jQuery选择器 Query选择器继承了CSS与Path语言的部分语法,允许通过标签名.属性名或内容对DOM元素进行快速.准确的选择, 而不必担心浏览器的兼容性,通过jQuery选择器对页 ...

  6. 23 | MySQL是怎么保证数据不丢的?

    今天这篇文章,我会继续和你介绍在业务高峰期临时提升性能的方法.从文章标题“MySQL是怎么保证数据不丢的?”,你就可以看出来,今天我和你介绍的方法,跟数据的可靠性有关. 在专栏前面文章和答疑篇中,我都 ...

  7. MongoDB 分片键分类与数据分发

    In sharded clusters, if you do not use the _id field as the shard key, then your application must en ...

  8. learning scala for comprehensions

    code: package com.aura.scala.day01 object forComprehensions { def main(args: Array[String]): Unit = ...

  9. 关于 requestAnimationFrame 小结

    一.小谈 requestAnimationFrame: 说起 requestAnimationFrame,我们先看幅图: 相当一部分的浏览器的显示频率是16.7ms, 就是上图第一行的节奏,表现就是“ ...

  10. Bzoj 1566: [NOI2009]管道取珠(DP)

    1566: [NOI2009]管道取珠 Time Limit: 20 Sec Memory Limit: 650 MB Submit: 1558 Solved: 890 [Submit][Status ...