1.在操作栏上写好一个按钮

if(full.LCZTMC == "初试通过"){return '<a href="javascript:void(0);" gid="'+full.GID+'" class="btn btn-link btn_look">个人信息查看</a>|<a href="javascript:void(0);" gid="'+full.GID+'" data-rybh="'+full.RYBH+'" class="btn btn-link btn_print">简历打印</a>|<a href="javascript:void(0);" gid="'+full.GID+'" class="btn btn-link btn_doupdate">编辑</a>|<a href="javascript:void(0);" gid="'+full.GID+'" class="btn btn-link btn_tjcj">成绩录入</a>|<a href="javascript:void(0);" gid="'+full.GID+'" class="btn btn-link btn_fsyj">发送邮件</a>'}else{return '<a href="javascript:void(0);" gid="'+full.GID+'" class="btn btn-link btn_look">个人信息查看</a>|<a href="javascript:void(0);" gid="'+full.GID+'" data-rybh="'+full.RYBH+'" class="btn btn-link btn_print">简历打印</a>|<a href="javascript:void(0);" gid="'+full.GID+'" class="btn btn-link btn_doupdate">编辑</a>|<a href="javascript:void(0);" gid="'+full.GID+'" class="btn btn-link btn_tjcj">成绩录入</a>'}

2.一个funtion事件

//发送邮件$(".btn_fsyj").click(function(){var gid = $(this).attr("gid");select_commonWin("${ctx}/zpcsgl/goMailEditPage?operateType=U&gid="+gid,"发送邮件", "600", "400");return false;});

3.goMailEditPage方法

@RequestMapping(value="goMailEditPage")public ModelAndView goMailEditPage(){PageData pd = this.getPageData();ModelAndView mv = this.getModelAndView();String gid = pd.getString("gid");String operateType = pd.getString("operateType");Map xmlist =zpcsglService.getName(gid);Map<String,Object> updateMap = new HashMap<String,Object>();updateMap.put("FSR", LUser.getRyxm());updateMap.put("FSSJ", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));mv.addObject("xmlist", xmlist);mv.addObject("gid", gid);mv.addObject("userid", LUser.getRybh());mv.addObject("operateType", operateType);mv.addObject("updateMap", updateMap);mv.setViewName("rsgl/zpgl/zpcsgl/mail_edit");return mv;}

4.我们跳转到一个弹窗页面,下面的弹窗页面代码;

<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="/webView/include/taglib.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>角色信息</title>
<%@include file="/static/include/public-manager-css.inc"%>
</head>
<body style="background-color: white;"><div class=' clearfix'><div class="pull-right">
<%--                 <button type='button' class="btn btn-default" id="btn_save" style="display: <c:if test="${operateType == 'L'}">none</c:if>;"><i class="fa icon-baocun-copy"></i>保存</button> --%><button type="button" class="btn btn-default" id="btn_saveandsend"><i class="fa icon-baocun-copy"></i>发送邮件</button>
<!--                 <button type='button' class="btn btn-default btn-without-icon" id="btn_cancelw">返回</button> --></div></div><form id="form" class="form-horizontal" action="" method="post" ><input type="hidden" id="gid"  name="gid" value="${gid}"/><input type="hidden" name="operateType" id="operateType" value="${operateType}"><div class="container-fluid dialog-body"><div class="row"><div  class="col-sm-12"><div class="input-group"><span class="input-group-addon"><span class="required">*</span>发送人</span> <input type="text" class="form-control input-radius"  name="jsbh"  value="${updateMap.FSR}" readonly/></div></div></div><div class="row"><div  class="col-sm-12"><div class="input-group"><span class="input-group-addon"><span class="required">*</span>收件人姓名</span> <input type="text" class="form-control input-radius"  name="jsbh"  value="${xmlist.XM}" readonly/><input type="text" class=" hidden"  name="rybh_to"  value="${xmlist.gid}" readonly/><input type="text" class=" hidden"  id="lczt"  value="${xmlist.lczt}" readonly/><input type="text" class=" hidden"  name="subject"  value="${xmlist.subject}" readonly/></div></div></div><!--             <div class="row"> -->
<!--                 <div class="col-sm-12"> -->
<!--                     <div class="input-group"> -->
<!--                         <span class="input-group-addon">招聘岗位</span> -->
<!--                         <select name="zt" class="form-control input-radius"> -->
<%--                             <option value="1" <c:if test="${jsb.zt == 1}">selected</c:if>>正常</option> --%>
<%--                             <option value="0" <c:if test="${jsb.zt == 0}">selected</c:if>>禁用</option> --%>
<!--                         </select> -->
<!--                     </div> -->
<!--                 </div> -->
<!--             </div> --><div class="row" ><div class="col-sm-12"><div class="input-group"><span class="input-group-addon">邮件内容</span> <textarea class="form-control input-radius" name="content" ></textarea></div></div></div></div></form>
<%@include file="/static/include/public-manager-js.inc"%>
<script type="text/javascript">
$(function(){var validate = $('#form').bootstrapValidator({fields: {jsmc:{validators:{notEmpty:{message:'不能为空'}}}}});//查看页面时处理函数if($("[name='operateType']").val()=='L'){$("input,select,textarea").attr("readonly","true");$("select").attr("disabled","true");}//保存按钮$("#btn_save").click(function(e){doSave(validate,"form","${ctx}/jsxx/doSave",function(val){//成功$("#operateType").val("U");getIframWindow("${param.pname}").$('#mydatatables').DataTable().ajax.reload();var winId = getTopFrame().layer.getFrameIndex(window.name);close(winId);},function(val){//失败});}); //取消$("#btn_cancelw").click(function(){window.location.href = "${ctx}/zpcsgl/goMailEditPage";});//保存并发送按钮  $("#btn_saveandsend").click(function(e){var lczt =  $("#lczt").val();var gid = $("#gid").val;if(lczt=='03'){saveMail();}else{saveMaill();}});    function saveMail(){// 验证validate.bootstrapValidator("validate");if(!($('#form').data('bootstrapValidator').isValid())){return;}var winId = getTopFrame().layer.getFrameIndex(window.name);var fsgw = $(".select-picker-search-checked").html();$("[name='fsgw']").val(fsgw);var index;var gid = $("#gid").val;// 富文本var content = $("[name='content']").val();// 表单普通序列化var serialize = $("#form").serialize();if(isNull(content)){alert("邮件内容不能为空!");}else{$.ajax({type:'post',url:'${ctx}/zpcsgl/doSaveMail',data: serialize,gid,success:function(val){close(index);if(val){getTopFrame().layer.alert("发送成功",{icon: 1, title:'提示'},null);getIframWindow("${param.pname}").window.location.href="${pageContext.request.contextPath}/zpcsgl/goListPage";close(winId);
//                          parent.window.location.href="${pageContext.request.contextPath}/zpcsgl/goListPage";
//                      alertRecruit("发送成功!",function(){
//                          close(winId);
//                          window.location.href="${pageContext.request.contextPath}/zpcsgl/goListPage";
//                      },"1");}else{alert("页面出错,发送失败!","2");}},error:function(val){close(index);alert("页面出错,保存失败!","2");},beforeSend:function(val){index = loading(2);}});}}function saveMaill(){// 验证validate.bootstrapValidator("validate");if(!($('#form').data('bootstrapValidator').isValid())){return;}var winId = getTopFrame().layer.getFrameIndex(window.name);var fsgw = $(".select-picker-search-checked").html();$("[name='fsgw']").val(fsgw);var index;var gid = $("#gid").val;// 富文本var content = $("[name='content']").val();// 表单普通序列化var serialize = $("#form").serialize();if(isNull(content)){alert("邮件内容不能为空!");}else{$.ajax({type:'post',url:'${ctx}/zpcsgl/doSaveMaill',data: serialize,gid,success:function(val){close(index);if(val){getTopFrame().layer.alert("发送成功",{icon: 1, title:'提示'},null);getIframWindow("${param.pname}").window.location.href="${pageContext.request.contextPath}/zpfsgl/goListPage";close(winId);
//                          parent.window.location.href="${pageContext.request.contextPath}/zpcsgl/goListPage";
//                      alertRecruit("发送成功!",function(){
//                          close(winId);
//                          window.location.href="${pageContext.request.contextPath}/zpcsgl/goListPage";
//                      },"1");}else{alert("页面出错,发送失败!","2");}},error:function(val){close(index);alert("页面出错,保存失败!","2");},beforeSend:function(val){index = loading(2);}});}}function alertRecruit(_text,_func,_icon){var index = "";// icon 1是对号   2是错号   3是问号   4是一把锁   5是哭脸   6是笑脸   7是叹号if(_icon != 'undefined' && _icon != undefined && _icon != '' && _icon != 'null' ){index = getTopFrame().layer.alert(_text,{icon: _icon, title:'提示'},_func);}else{index = getTopFrame().layer.alert(_text,{icon: 7, title:'提示'},_func);}}
});
</script>
</body>
</html>

5.我们走了一个发送邮件的方法

controller层

 @RequestMapping(value="/doSaveMail",produces = "text/html;charset=UTF-8")@ResponseBody@Transactionalpublic Object doSaveMail(RS_ZP_MAIL mail,String gid){PageData pd = this.getPageData();String operateType = pd.getString("operateType");int b = 0;int a = 0;b = zpcsglService.doAddMail(mail,gid);if (b > 0) {return "{\"success\":\"true\",\"msg\":\"发送成功!\"}";    } else {return "{\"success\":\"false\",\"msg\":\"发送失败!\"}";}}

service层

public int doAddMail(RS_ZP_MAIL mail,String gid) {return zpcsglDao.doAddMail(mail, gid);}

dao层

 public int doAddMail(RS_ZP_MAIL mail,String gid) {String rybh = LUser.getRybh();String guid = UuidUtil.get32UUID();StringBuffer sql = new StringBuffer();sql.append(" INSERT INTO RS_ZP_MAIL(ID,RYBH_TO,RYBH_CC,RYBH_BCC,SUBJECT,CONTENT,FSR,FSSJ,SFFS,FSLX,FSND,FSPC,FSGW) ");sql.append(" VALUES(?,?,?,?,?,?,?,SYSDATE,?,?,?,?,?)");Object [] obj = new Object[]{guid,mail.getRybh_to(),mail.getRybh_cc(),mail.getRybh_bcc(),mail.getSubject(),mail.getContent(),rybh,mail.getSffs(),mail.getFslx(),mail.getFsnd(),mail.getFspc(),mail.getFsgw()};int s = 0;s = db.update(sql.toString(),obj);this.sendEmail(mail);int a = this.doUpdateSffs(gid);if (a>0){return s;}else{return 0;}}//DBHelper.java  @Overridepublic int update(String sql, Object... args) {preparSql(sql,args);try {  return super.update(sql, args);} catch (Exception e) {TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();logger.error("数据库操作失败\n" + e.getCause().getMessage());  return -1;}}public void sendEmail(RS_ZP_MAIL mail) {String[] to = this.getMailToByUser(mail.getRybh_to()); // 收件人Map<String,Object> mailMap = this.getMailBeanMap();String from = mailMap.get("SENDMAIL")+"";// 发件人String pass = mailMap.get("SQM")+"";// 授权码String hostSend = mailMap.get("SMTP")+""; // 主机FmtMail ms = new FmtMail(to, new String[]{} , new String[]{}, from, pass, hostSend, "587");try {ms.send(mail.getSubject(),mail.getContent());} catch (MessagingException e) {e.printStackTrace();}    }public String [] getMailToByUser(String to) {to = Validate.isNullToDefaultString(to, "");String sql = "SELECT EMAILS FROM RS_ZP_USERS WHERE GID IN ('"+to.replace(",", "','")+"')";List<Map<String,Object>> mailList = db.queryForList(sql);Map<String,Object> mailMap = new HashMap<>(16);String emails = "";for (int i = 0 ; i < mailList.size() ; i ++) {mailMap = (Map<String,Object>)mailList.get(i);emails += mailMap.get("EMAILS") + ",";}if(Validate.noNull(emails)){emails = emails.substring(0 , emails.length()-1 );System.err.println(" 发送至邮箱 :  " + emails);String [] emailsArr = emails.split(",");return emailsArr;}else{return null;}}public Map<String, Object> getMailBeanMap() {return db.queryForMap("SELECT SMTP,SENDMAIL,SQM FROM RS_SYS_LOGIN", new Object[]{});}

需要建一个实体类和工具类

下面是实体类


package com.googosoft.pojo.rsgl.zpgl;public class RS_ZP_MAIL {private String id;private String rybh_to;private String rybh_cc;private String rybh_bcc;private String subject;private String content;private String sffs;private String fslx;public String getFslx() {return fslx;}public void setFslx(String fslx) {this.fslx = fslx;}public String getFsnd() {return fsnd;}public void setFsnd(String fsnd) {this.fsnd = fsnd;}public String getFspc() {return fspc;}public void setFspc(String fspc) {this.fspc = fspc;}public String getFsgw() {return fsgw;}public void setFsgw(String fsgw) {this.fsgw = fsgw;}private String fsnd;private String fspc;private String fsgw;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getRybh_to() {return rybh_to;}public void setRybh_to(String rybh_to) {this.rybh_to = rybh_to;}public String getRybh_cc() {return rybh_cc;}public void setRybh_cc(String rybh_cc) {this.rybh_cc = rybh_cc;}public String getRybh_bcc() {return rybh_bcc;}public void setRybh_bcc(String rybh_bcc) {this.rybh_bcc = rybh_bcc;}public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public String getSffs() {return sffs;}public void setSffs(String sffs) {this.sffs = sffs;}}

工具类

package com.googosoft.util.javamail;import java.util.Properties;import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;/*** * @version: V2.0* @author: 邮件发送工具类* @className: FmtMail* @packageName: com.googosoft.util.mail* @description: * @data:2021年2月6日 上午9:24:36*/
public class FmtMail {private String[] to;   // 收件人电子邮箱private String[] cc;   // 抄送收件人电子邮箱private String[] bcc;   // 密送收件人电子邮箱private String   from; // 发件人电子邮箱private String   pass;  // 授权码private MimeMessage message; // 创建默认的 MimeMessage 对象/*** 构造方法* @description: * @param to  收件人* @param cc  抄送收件人* @param bcc  密送收件人* @param from   发件人* @param pass   发件人邮箱授权码* @param hostSend  发件邮箱主机* @param portSend  发件邮箱端口,默认587*/public FmtMail(String[] to,String[] cc,String[] bcc, String from, String pass,String hostSend, String portSend) {if(portSend == null || "".equals(portSend)){portSend = "587";}this.to = to;this.cc = cc;this.bcc = bcc;this.from = from;this.pass = pass;init(hostSend, portSend);}/*** * @version: V1.0* @author: XUYANJIE* @className: init* @packageName: com.googosoft.util.mail* @description: 初始化Mail* @ModifyReason: * @data: 2021年2月6日 上午9:05:26* @param hostSend* @param portSend*/public void init(String hostSend, String portSend) {// 获取系统属性Properties properties = new Properties();// 设置邮件服务器// QQ : smtp.qq.com,使用SSL,端口号默认587properties.setProperty("mail.smtp.host", hostSend);properties.setProperty("mail.smtp.port", portSend);properties.put("mail.smtp.auth", "true");Session session = Session.getInstance(properties, new Authenticator() {public PasswordAuthentication getPasswordAuthentication() {// 发件人邮件用户名、密码return new PasswordAuthentication(from, pass); }});//  创建默认的 MimeMessage 对象message = new MimeMessage(session);}/*** * @version: V1.0* @author: XUYANJIE* @className: send* @packageName: com.googosoft.util.mail* @description: 发送消息* @ModifyReason: * @data: 2021年2月6日 上午9:05:50* @param subject  标题* @param content   * @throws MessagingException*/public void send(String subject, String content) throws MessagingException {// Set From:message.setFrom(new InternetAddress(from));//  发送邮件    TO发送if(to.length > 0){for (String t : to) {message.addRecipient(Message.RecipientType.TO, new InternetAddress(t));}}//  发送邮件    CC抄送  if(cc.length > 0){for (String t : cc) {message.addRecipient(Message.RecipientType.BCC, new InternetAddress(t));}}//  发送邮件   BCC密送  if(bcc.length > 0){for (String t : bcc) {message.addRecipient(Message.RecipientType.CC, new InternetAddress(t));}}// 设置主题message.setSubject(subject);// 设置消息体, 可发送 HTML 消息, 插入html标签message.setContent(content,"text/html;charset=utf-8" );//  发送消息Transport.send(message);System.err.println("Sent message successfully....");}}

数据库的表结构

如何实现一个邮件的发送相关推荐

  1. 我的Exchange 2010 启用匿名了。我怎么防止别人任意伪造一个邮件地址发送给我内部的人呢?

    最近客户碰到了一个问题,就是他的接受连接器启用了匿名,匿名之后发现有人伪造了内部用户的邮件名将邮件发送给自己,他希望防止这种现象发生,怎么办呢? 甚至想取消掉匿名访问来解决这个问题,取消匿名访问对于单 ...

  2. php pear mail smtp 不验证,怎么在php中使用pear_smtp实现一个邮件发送功能

    怎么在php中使用pear_smtp实现一个邮件发送功能 发布时间:2020-12-22 16:24:35 来源:亿速云 阅读:76 作者:Leah 怎么在php中使用pear_smtp实现一个邮件发 ...

  3. python邮件定时发送短信_python实现自动定时给女朋友发手机短信,每天一个笑话!...

    加小编QQ群:832339352 即可自动获取大量Python视频教程以及各类PDF! 大四的生活就是这么无聊,我琢磨着也学了这么多东西了,为啥不能用自己的知识来给生活找点乐子呢?我想反正每天都要给T ...

  4. 360显示html邮件内容,“邮件怎样发送视频内容”的解决方案

    问题描述: 发邮件时,除了文字.图片.附件外,还能发送视频内容. 解决方案: 1.   打开你的邮箱,点击写信,出来如下的界面,这里我以QQ邮箱为例 2.  点击[正文]部分的[html],如图: 3 ...

  5. php内置邮件sendmail发送,PHP发送邮件函数sendmail()

    不需要邮件服务器,不使用mail内置函数,一个类就搞定,利用PHPMailer类我写了一个自定义函数 sendmail() ,VERY实用! 以前也在几个PHP论坛上发表过这个发邮件的函数,今天再发, ...

  6. python接收邮件g_Python接收Gmail新邮件并发送到gtalk的方法

    本文实例讲述了Python接收Gmail新邮件并发送到gtalk的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python # -*- coding: utf-8 - ...

  7. 延迟或计划邮件的发送(zz.is2120)

    可以推迟单个电子邮件的传递时间,也可以使用规则推迟所有邮件的传递时间,方法是:让它们在您单击"发送"后,先在"发件箱"中保留一段时间,然后再传递. //z 20 ...

  8. 使用spring实现邮件的发送(含测试,源码,注释)

    此篇主要讲的是使用spring配置实现邮件发送,与之前的底层实现简便了不少,只需要几个配置就可以了,那么请往下看: 先写个接口 /** * @Title: IMailserdService.java ...

  9. python 收发邮件_python发送各类邮件的主要基本方法

    利用python实现基本的邮件发送. 感谢以下博客的整理,本人在学习的同时也做了一些整理 一.相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍: ...

最新文章

  1. java 方法查询_java 几种查询方式【转】
  2. 农林废弃物如何变废为宝?
  3. mysql5.7导入数据的权限问题
  4. intellij出现dependency ‘xxx‘not found
  5. 省选专练[POI2005]SAM-Toy Cars
  6. 吴恩达|机器学习作业8.0.异常检测
  7. c语言 机器语言 汇编语言_多语言机器人新闻记者
  8. 微信小程序点击图片全屏展示,并可以翻下一张图
  9. Android文件的读写
  10. 杭州地区,街道sql,用于项目的地址查询
  11. 打开计算机读取硬盘慢,机械硬盘读写速度慢几招优化方法提升!
  12. python取值范围_python 数据库取值范围
  13. python3和5_Python3算法之五:最大子序和
  14. 带你玩转kubernetes-k8s(第61篇-Kubernetes之资源紧缺时的Pod驱逐机制)
  15. 网安学习(二十五)HTTP协议、HTTS、邮件协议
  16. 推荐几款项目管理工具 总有一款适合你
  17. 下载安装破解idea2018
  18. jmeter监听器---聚合数据样本展示
  19. ARM64之内存屏障
  20. 单片机 STM32 HAL PCF8574 例子代码

热门文章

  1. 这里有11种方法,供你用Python下载文件
  2. 压缩感知之常用稀疏恢复算法(凸优化算法)及matlab代码
  3. 分析下难得一见的ROR的RCE(CVE-2013-0156)
  4. 小兔鲜案例注册,登录,索引的实现效果
  5. AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题
  6. 药物管理信息系统(C#药材信息管理系统)
  7. 通俗易懂的USB协议详解(转…
  8. 计算—工厂模式模式(练习)
  9. excel表格数据的批量插入
  10. 使用linkedin第三方登陆报错You must specify a valid JavaScript API Domain as part of this key's configuration