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("运行结果!!");*/
}
}

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


  

最新文章

  1. 解决BUG:CS1617: 选项“6”对 /langversion 无效;必须是 ISO-1、ISO-2、3、4、5 或 Default
  2. 最小化安装的CentOS7挂载ntfs格式的U盘
  3. Amoeba+Mysql实现数据库读写分离
  4. JavaScript DOM 编程艺术(第2版)读书笔记 (9)
  5. Reflector反编译.NET文件后修复【转】
  6. HMM 自学教程(六)维特比算法
  7. HTTP负载测试——Tsung
  8. jdk安装环境变量设置
  9. Android中Activity、Service和线程之间的通信
  10. Ajax具体使用
  11. Zen Coding css,html缩写替换大观 快速写出html,css
  12. libevent在windows下使用步骤详解
  13. TsinsenA1489 抽奖 【期望】
  14. 第二节 java流程控制(循环结构)
  15. aws.s3的 upload 和putObject有什么区别
  16. Reading table information for completion of table and column names
  17. JSONObject、JSONArray
  18. calico网络
  19. 10个android开发必备的开源项目
  20. jzoj3865[JSOI2014]士兵部署

热门文章

  1. JavaScript 常用Object
  2. Linux 介绍与安装
  3. 黑魔法师之门 (magician)-并查集
  4. GreenPlum 数据备份与恢复
  5. jQuery的ajax()方法提交数组问题
  6. Storage Port Drivers
  7. luogu_P3674 小清新人渣的本愿
  8. tez 0.9.0 配置
  9. $(&#39;#jyzjg&#39;).combobox(&#39;clear&#39;);
  10. IdentityServer4入门五:错误处理