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

                <form class="form-horizontal" id="emailEdit" style="display: none;margin: 40px;">
<%--收件人--%>
<div class="form-group">
<label for="emailer" class="col-sm-2 control-label" >收件人</label>
<div class="col-sm-10" style="width: 82%" >
<textarea class="form-control" rows="3" name="emailer" id="emailer" placeholder="多个收件人,请以,隔开"></textarea>
</div>
</div>
<%--邮件标题--%>
<div class="form-group" >
<label for="taskName" class="col-sm-2 control-label">邮件标题</label>
<div class="col-sm-10" style="width: 82%" >
<input type="text" class="form-control" name="emailTitle" id="emailTitle" placeholder="邮件标题">
</div>
</div>
<%--正文--%>
<div class="form-group" >
<label for="accdescription" class="col-sm-2 control-label">正文</label>
<div class="col-sm-10" style="width: 82%" >
<textarea class="form-control" rows="10" name="emailContent" id="emailContent" placeholder="邮件正文"></textarea>
</div>
</div>
<div class="form-group" style="float: right;margin-right: 40px;margin-top: 30px">
<div class="col-sm-offset-2 col-sm-10" >
<button type="button" class="btn btn-success" id="send" style="background-color: #FF8C00" >发送</button>
</div>
</div>
</form>

2.ajax请求

formCheckClean清除校验格式的函数

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

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

var index11;
function formCheckClean(){
$('.text-danger').remove();//首先清除提示的标签
$("*").removeClass('has-error');//清除has-error错误样式
}//校验样式清除函数
    //邮箱非空校验及格式校验函数
function checkparam(){
var flag=true;
var emailer=$("#emailer").val();
var emailTitle=$("#emailTitle").val();
if(emailer == null || emailer == ""){
$("#emailer").parent().parent().addClass('form-group has-error');
$("#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>');
flag=false;
}else{
reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
var strList=emailer.split(",");
var errorcount =0;
var errormail ="";
for(i=0;i<strList.length;i++){
if(!reg.test(strList[i])){
errormail=errormail+strList[i]+';';
errorcount++;
}
}
if(errorcount >=1){
// console.log("不符合要求的邮箱个数:"+errorcount);
$("#emailer").parent().parent().addClass('form-group has-error');
$("#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>');
flag=false;
}
}
if(emailTitle == null || emailTitle == ""){
$("#emailTitle").parent().parent().addClass('form-group has-error');
$("#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>');
flag=false;
}
return flag;
}
//发送邮件函数
$("button#send").unbind("click").click(function(){
formCheckClean();
var flag=checkparam();
var reg=new RegExp("\n","g"); //创建正则RegExp对象
eContent=$("#emailContent").val().replace(reg,"<br/>");
if(flag == true){
document.getElementById("send").innerHTML = "发送中...";
// $("#send").text("发送中...");
$.ajax({
type : "post",
url : "/accident/SendEditEmail.do",
dataType:"json",
data: {"emailer":$("#emailer").val(),"emailTitle":$("#emailTitle").val(),"emailContent":eContent},
async : false,
success:function (data){
document.getElementById("send").innerHTML = "发送";
if(data= "ture"){
layer.alert("发送成功!", {icon: 6,skin: 'layui-layer-lan',});
layer.close(index11)//关闭弹层
$("#functontestform").find('input[type=text],select,input[type=date],textarea').each(function() {
$(this).val('');
});//清空form表单并查询
$('#functionTestSelectTable').bootstrapTable('refresh');
}else {
layer.msg("发送失败,请稍后重试", {icon: 5,skin: 'layui-layer-lan',});
}
}//success end });//ajax end
}
});

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

    /**
* 发送邮件编辑
*
* @param response
* @return
* @throws Exception
* @param: request
*/
@RequestMapping(value = "/SendEditEmail.do")
@ResponseBody
public String SendEditEmail(@Valid @ModelAttribute("accident") Accident accident, BindingResult br,
Model model, HttpServletRequest req, HttpServletResponse response) throws Exception {
response.setContentType("text/html;charset=utf-8");
req.setCharacterEncoding("utf-8");
//收件人
String emailer = req.getParameter("emailer").trim();
//邮件标题
String emailTitle = req.getParameter("emailTitle").trim();
//邮件内容
String emailContent = req.getParameter("emailContent").trim();
//处理文件内容使用
ArrayList<String> list = new ArrayList<>();
System.out.println(emailContent);
//发送邮件
String status="false";
if(emailer != "" && emailTitle != "" && emailContent != "")
{
List emailerList = new ArrayList();//不能使用string类型的类型,这样只能发送一个收件人
String []median=emailer.split(",");//对输入的多个邮件进行逗号分割
for(int i=0;i<median.length;i++){
emailerList.add(new InternetAddress(median[i]));
}
InternetAddress[] address =(InternetAddress[])emailerList.toArray(new InternetAddress[emailerList.size()]);
// System.out.println("收件人所在数组-----"+address);
for(int i=0;i<address.length;i++){
status=SendMail.sendMail(address[i],emailTitle,emailContent);
}
}
return status;
}

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

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

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

package luckyweb.seagull.util;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties; /**
* @author lw
* @createTime 2018/6/25 15:27
* @description 获取配置文件类
*/
public class ProUtil {
private static final String PROPERTIES_DEFAULT = "global.properties";
public static String host;
public static Integer port;
public static String userName;
public static String passWord;
public static String emailForm;
public static String timeout;
public static String personal;
public static Properties properties;/**
* 初始化
*/
private static void init() {
properties = new Properties();
try {
InputStream inputStream = ProUtil.class.getClassLoader().getResourceAsStream(PROPERTIES_DEFAULT);
properties.load(inputStream);
inputStream.close();
//properties.setProperty("mailFrom","cuizhixiang@feitu.biz");
host = properties.getProperty("mailHost");
port = Integer.parseInt(properties.getProperty("mailPort"));
userName = properties.getProperty("mailUsername");
passWord = properties.getProperty("mailPassword");
emailForm = properties.getProperty("mailFrom");
timeout = properties.getProperty("mailTimeout");
personal = "测试部";//发件人的别名
} catch (IOException e) {
e.printStackTrace();
}
}
}

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

package luckyweb.seagull.util;

import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper; import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.UnsupportedEncodingException;
import java.util.Properties; /**
* @author lw
* @createTime 2018/6/25 15:24
* @description 服务端邮件类
*/
public class SendMail {
private static final String HOST = ProUtil.host;
private static final Integer PORT = ProUtil.port;
private static final String USERNAME = ProUtil.userName;
private static final String PASSWORD = ProUtil.passWord;
private static final String emailForm = ProUtil.emailForm;
private static final String timeout = ProUtil.timeout;
private static final String personal = ProUtil.personal;
private static JavaMailSenderImpl mailSender = createMailSender();
private SendMail(){}
/**
* 邮件发送器
*
* @return 配置信息工具
*/
private static JavaMailSenderImpl createMailSender() {
JavaMailSenderImpl sender = new JavaMailSenderImpl();
sender.setHost(HOST);
sender.setPort(PORT);
sender.setUsername(USERNAME);
sender.setPassword(PASSWORD);
sender.setDefaultEncoding("Utf-8");
Properties p = new Properties();
p.setProperty("mail.smtp.timeout", timeout);
p.setProperty("mail.smtp.auth", "true");
sender.setJavaMailProperties(p);
return sender;
} /**
* 发送邮件
*
* @param to 接受人
* @param subject 主题
* @param html 发送内容
* @throws :MessagingException 异常
* @throws :UnsupportedEncodingException 异常
*/
public static String sendMail(InternetAddress to, String subject, String html) throws MessagingException,UnsupportedEncodingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
// 设置utf-8或UTF-8编码,否则邮件会有乱码
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
messageHelper.setFrom(emailForm, personal);
messageHelper.setTo(to);
messageHelper.setSubject(subject);
messageHelper.setText(html, true);
mailSender.send(mimeMessage);
return "true" ;
} public static void main(String[] args) {
String ss = "项目名称: 合肥通 事故状态: 跟踪处理完成 事故等级: 五级及以下事故 发生时间: 2018-06-11 13:52:42 事故原因类型: 紧急上线-未测试 事故描述: 线上事故 事故原因分析: 事故原因分析 受影响范围: 受影响范围 纠正处理过程: 纠正处理过程" +
"(需点名责任人) 解决时间: 2018-06-11 13:53:25 事故汇报人: 张美丽";
for (int i = 0; i < ss.length(); i++) {
if(ss.equals(":"))
break;
String new_ss =ss.replace(" ","<br>");
System.out.print(new_ss);
}
/* String subject = "html邮件测试"; // subject javamail自动转码 StringBuffer theMessage = new StringBuffer();
theMessage.append("<h2><font color=red>加油</font></h2>");
theMessage.append("<hr>");
theMessage.append("<i>美丽的开始</i>");
theMessage.append("<table border='1'><tr><td>aaa</td><td>bbb</td></tr><tr><td>ccc</td><td>ddd</td></tr></table>"); try {
SendMail.sendMail("357712148@qq.com",subject,theMessage.toString());
} catch (MessagingException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.out.println("运行结果!!");*/
}
}

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


  

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. AirtestIde的安装(win10)

    Airtest 是网易出品的一款基于图像识别和poco控件识别的一款UI自动化测试工具. Airtest IDE是这个项目的一个IDE,就像Eclipse.Pycharm一样,是一个集成开发工具. A ...

  2. 使用jQuery快速高效制作网页交互特效---JavaScript对象及初始面向对象

    一.JavaScript中的基本数据类型 number(数值类型)    string(字符串类型)    boolean(布尔类型)    null(空类型)    undefined(未定义类型) ...

  3. 使用其他服务器引入JS文件

    使用其他服务器引入JS文件,1,减轻服务器压力2,速度快3,可以缓存 cdnjs库,更新比较快https://cdnjs.com/ cdn库 引入JS文件如:jquerybootcdn : https ...

  4. 原生JS实现九宫格拼图

    实现这个案例,需要考虑到鼠标的拖拽效果(onmousedown/onmousemove/mouseup) 拖拽分解: 按下鼠标---->移动鼠标----->松开鼠标 1.给目标元素添加on ...

  5. UEFI分区损坏重建指南

    自从国庆假期发了这两篇博客后,我这个人就像是从博客园消失了一样,半个多月没更新..自从10月5号把UEFI分区删掉之后,我的电脑就因为没有引导,找不到系统而无法使用了.所以这篇博客,就分享一下我在这半 ...

  6. 【中国剩余定理-入门】-C++

    中国剩余定理也称孙子定理,是中国古代求解一次同余式组(见同余)的方法.是数论中一个重要定理. 这玩意在luogu居然有模板题: [TJOI2009]猜数字 先来看一个问题: 在<孙子算经> ...

  7. LibreOJ #115. 无源汇有上下界可行流

    二次联通门 : LibreOJ #115. 无源汇有上下界可行流 /* LibreOJ #115. 无源汇有上下界可行流 板子题 我也就会写写板子题了.. */ #include <cstdio ...

  8. 贾扬清牛人(zz)

    贾扬清加入阿里巴巴后,能否诞生出他的第三个世界级杰作? 文 / 华商韬略 张凌云  本文转载,著作权归原作者所有   贾扬清加入阿里巴巴后,能否诞生出他的第三个世界级杰作? 2017年1月11日,美国 ...

  9. 支持utf8的str_split函数

    <?php header("Content-type: text/html; charset=utf-8"); /** * 按字节数对字符串进行分片 * @param $st ...

  10. cesium地下模式(地表透明)4

    这篇博客主要罗列一下解决地下模式(地表透明)的相关资源 1.Cesium的Github仓库地下模式issue 有人提了这个问题,但是cesium官方没有解决这个问题,持续跟踪一下问题说不定哪天官方就解 ...