zoukankan      html  css  js  c++  java
  • Spring mvc +ajax 发送邮件

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

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


      
  • 相关阅读:
    python中scipy学习——随机稀疏矩阵及操作
    ptyhon中文本挖掘精简版
    ptyhon中文本挖掘精简版
    [python] 使用scikit-learn工具计算文本TF-IDF值
    [python] 使用scikit-learn工具计算文本TF-IDF值
    python高手的自修课
    python高手的自修课
    C/C++ scanf 函数中%s 和%c 的简单差别
    Ctags基本配置
    搭建gitserver
  • 原文地址:https://www.cnblogs.com/alasijia/p/9330934.html
Copyright © 2011-2022 走看看