博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot实现邮件发送
阅读量:4357 次
发布时间:2019-06-07

本文共 9262 字,大约阅读时间需要 30 分钟。

1.创建springboot项目。

 

 

 

2.创建好的项目如图:

 

 

 

在static目录下新建index.html。

 

 

 

3.点击启动项目

 

 

在浏览器的地址栏中访问:http://localhost:8080/

 

访问到index.html说明创建项目成功。

 

4.集成邮件发送

参考地址:

 

 

①实现以后的目录结构,如图:

 

②index.html部分代码(主要实现页面中申请演示的一个表单提交,然后将表单内容通过邮件发送给相关负责人,然后进行联系跟进):

<div class="modalform" style="display: none" id="controlViewModalForm">

    <div class="reservedemo_bg">
        <div class="myformbutton">
            <span>×</span>
        </div>
    </div>
    <div class="tableform">
        <table>
            <tr>
                <td width="150px" class="alignright">
                    <div><span>公司名称</span></div>
                </td>
                <td width="350px">
                    <div><input type="text" class="inputwidth340" name="companyname"></div>
                </td>
            </tr>
            <tr>
                <td class="alignright">
                    <div><span>联系人</span></div>
                </td>
                <td>
                    <div><input type="text" class="inputwidth340" name="companycustomer"></div>
                </td>
            </tr>
            <tr>
                <td class="alignright">
                    <div><span>联系电话</span></div>
                </td>
                <td>
                    <div><input type="text" class="inputwidth340" name="phonenum"></div>
                </td>
            </tr>
            <tr>
                <td class="alignright">
                    <div><span>预约演示产品</span></div>
                </td>
                <td>
                    <div>
                        <label class="mychecklabel">
                            <input class="demo-radio" type="checkbox" name="orderproduct" value="1">
                            <span class="demo-checkbox demo-radioInput"></span>
                            <span class="checkspan1">监控平台</span>
                        </label>
                    </div>
                </td>
            </tr>
            <tr>
                <td>
                    <div><span></span></div>
                </td>
                <td>
                    <div>
                        <label class="mychecklabel">
                            <input class="demo-radio" type="checkbox" name="orderproduct" value="2">
                            <span class="demo-checkbox demo-radioInput"></span>
                            <span class="checkspan1">办公流程平台</span>
                        </label>
                    </div>
                </td>
            </tr>
            <tr style="height: 20px">
                <td>
                    <div><span></span></div>
                </td>
                <td></td>
            </tr>
            <tr>
                <td>
                    <div><span></span></div>
                </td>
                <td>
                    <div class="submitstyle"><span>提交</span></div>
                </td>
            </tr>
        </table>
    </div>
</div>

 

③对应表单的js代码:

//预约产品演示 form 表单弹出 //弹出view var productDemo = $("#center_sky_font"); productDemo.on('click', viewModalForm); function viewModalForm() {
    var modalForm = document.getElementById("controlViewModalForm");     modalForm.style.display = ""; } //关闭view var closeView = $(".myformbutton"); closeView.on('click', closeViewModalForm); function closeViewModalForm() {
    var modalForm = document.getElementById("controlViewModalForm");     modalForm.style.display = "none";     //清空表单     $("input[name='companyname']").val("");     $("input[name='companycustomer']").val("");     $("input[name='phonenum']").val("");     $("input[name='orderproduct']").each(function (i, n) {
        $(this)[0].checked=false;     }); } //发送邮件 var sendMailButton = $(".submitstyle"); sendMailButton.on('click', sendMailInfo); function sendMailInfo() {
    // 判断有没有填写公司名称和联系人     var conpanyName_str = $("input[name='companyname']").val(),         conpanyCustomer_str = $("input[name='companycustomer']").val();     if (conpanyName_str == "" || conpanyCustomer_str == "") {
        alert("请填写完整的信息!");         return;     }     // 获取电话并进行验证     var phongNum = $("input[name='phonenum']").val();     if (phongNum == "" || !checkTel(phongNum)) {
        alert("请输入正确的电话号码!")         return;     }     // 获取复选框数组     var orderProductsArr = [];     $("input[name='orderproduct']:checked").each(function (i, n) {
        orderProductsArr[i] = $(this).val();     });     // 如果没有选择演示产品不能提交     if (orderProductsArr.length == 0) {
        alert("请选择预约演示的产品!");         return;     }     // 封装页面中获取的数据对象     var emailInfo = {
        conpanyName: conpanyName_str,         conpanyCustomer: conpanyCustomer_str,         phoneNum: phongNum,         orderProducts: orderProductsArr,     };     console.log("fromInfo:", emailInfo);     $.ajax({
        type: "POST",         url: "/mail/sendSimpleMail",         data: JSON.stringify(emailInfo),         async: false,         dataType: "json",         contentType: "application/json;charset=utf-8",         success: function (data) {
            console.log("ajax-succdata:", data);             if (data.state == 200) {
                alert(data.msg);                 closeViewModalForm();             } else {
                alert(data.msg);             }         }     }) } // 电话验证 function checkTel(tel) {
    var mobile = /^1[3|5|8]\d{9}$/, phone = /^0\d{2,3}-?\d{7,8}$/;     return mobile.test(tel) || phone.test(tel); }

 

④MailController的定义:

这里面只有一个return,将所有的处理放在service实现类中进行处理。

package com.vlinksoft.controller; import com.vlinksoft.po.MailObj; import com.vlinksoft.service.MailService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.Map; /**  * @date 2018/5/29  * @desc 发送邮件的Controller  */ @RestController @RequestMapping("/mail") public class MailController {
    @Autowired     private MailService mailService;     @RequestMapping(value = "/sendSimpleMail", method = RequestMethod.POST)     @ResponseBody     public Map sendSimpleMail(@RequestBody MailObj mailObj) {
        return mailService.sendSimpleMail(mailObj);     } }

 

⑤services接口的定义。

package com.vlinksoft.service; import com.vlinksoft.po.MailObj; import java.util.Map; /**  * @date 2018/5/29 0029  */ public interface MailService {
    Map sendSimpleMail(MailObj mailObj); }

 

⑥service实现类的定义。

package com.vlinksoft.service.impl; import com.vlinksoft.po.MailObj; import com.vlinksoft.service.MailService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import java.util.HashMap; import java.util.Map;   @Service @Component public class MailServiceImpl implements MailService {
    @Autowired     private JavaMailSender mailSender;     //从propertise文件中获取发送邮箱和接收邮箱的信息     @Value("${mail.fromMail.addr}")     private String from;     @Value("${mail.toMail.addr}")     private String to;     @Value("${mail.toMail.subject}")     private String subject;     /**      * @date 2018/5/29      * @desc 发送简单邮件      */     @Override     public Map sendSimpleMail(MailObj mailObj) {
        SimpleMailMessage message = new SimpleMailMessage();         message.setFrom(from);         message.setTo(to);         message.setSubject(subject);         String orderProduct_str = "";         String getOrderProductArr[] = mailObj.getOrderProducts();         switch (getOrderProductArr.length) {
            case 1:                 if ("1".equals(getOrderProductArr[0])) {
                    orderProduct_str = "视频监控平台";                 } else {
                    orderProduct_str = "ITSM办公流程平台";                 }                 break;             case 2:                 orderProduct_str = "监控平台、办公流程平台";                 break;         }         String content = "科技有限公司\n\n产品预约演示申请:\n\n公司名称:" + mailObj.getConpanyName() + "\n联系人:" + mailObj.getConpanyCustomer()                 + "\n联系电话:" + mailObj.getPhoneNum() + "\n预约产品:" + orderProduct_str + "\n\n请及时进行联系!";         message.setText(content);         Map map = new HashMap();         try {
            mailSender.send(message);             map.put("state", 200);             map.put("msg", "预约演示成功!\n稍后会有人和您联系,请注意收听您的电话。");             System.out.println("邮件发送成功!");         } catch (Exception e) {
            map.put("state", 299);             map.put("msg", "预约演示失败!\n请稍后申请。");             System.out.println("发送邮件时发生异常!" + e);         }         return map;     } }

 

 

⑦application.properties定义:

将收件人和发件人的经常修改的信息都放入到properties

注意:properties文件中不能有空格。

#############邮箱服务器地址(此处我使用的是163的邮箱)############# spring.mail.host=smtp.163.com #############用户名(此处我填写的是163网站登录的用户名)############# spring.mail.username=xxx@163.com #############授权码(此处我填写的是163网站用户的授权码)############# spring.mail.password=xxxxxx spring.mail.default-encoding=UTF-8 #############发送邮件的人############# mail.fromMail.addr=xxxxxx@163.com #############收件人############# mail.toMail.addr=xxx@qq.com #############subject############# mail.toMail.subject=xxxxxxxxxx

 

 

⑧pojo的定义:

package com.vlinksoft.po; import java.io.Serializable; /**  * @date 2018/5/29 0029  */ public class MailObj implements Serializable {
    private String conpanyName;     private String conpanyCustomer;     private String phoneNum;     private String[] orderProducts;     public String[] getOrderProducts() {
        return orderProducts;     }     public void setOrderProducts(String[] orderProducts) {
        this.orderProducts = orderProducts;     }     public String getConpanyName() {
        return conpanyName;     }     public void setConpanyName(String conpanyName) {
        this.conpanyName = conpanyName;     }     public String getConpanyCustomer() {
        return conpanyCustomer;     }     public void setConpanyCustomer(String conpanyCustomer) {
        this.conpanyCustomer = conpanyCustomer;     }     public String getPhoneNum() {
        return phoneNum;     }     public void setPhoneNum(String phoneNum) {
        this.phoneNum = phoneNum;     } }

 

注意:

1.页面弹出框背景是全屏的div,display=fixed

2.js复选框获取选中的val值需要遍历。

3.controller中参数的交互问题。

4.将所有的数据处理放在serviceimpl中进行处理。

5.ajax请求,controller中的返回Map集合。

6.邮件需要登录添加第三方密码。

 

转载于:https://www.cnblogs.com/songjn/p/9115241.html

你可能感兴趣的文章
纤程与Quasar
查看>>
MySQL的一个麻烦事
查看>>
Uri、URL和URN三者的区别
查看>>
数据字典的转换
查看>>
二维数组按照指定的字段排序的函数
查看>>
在IAR下通过Jlink将程序直接下载到Flash指定地址
查看>>
POJ2560-雀斑(Freckles)【图论,并查集,最小生成树,KURUSKAL】
查看>>
[Angular] Tree shakable provider
查看>>
[Vue + TS] Use Dependency Injection in Vue Using @Inject and @Provide Decorators with TypeScript
查看>>
[Angular 2] Select From Multiple Nested Angular 2 Elements
查看>>
C# 中的委托和事件[转帖]
查看>>
图的遍历(bfs+dfs)模板
查看>>
angular service 进行组件通信
查看>>
linux安装Mac的默认Monaco字体
查看>>
java语言的特点
查看>>
关于动态添加iview admin路由以及刷新侧边栏
查看>>
ApplicationInsights的探测器尝鲜
查看>>
java 解析Json格式数据
查看>>
unix中的线程池技术详解
查看>>
CSS简介
查看>>