1. 消息发送

用于重要信息变更验证。支持通过邮件、短信方式进行消息推送,也支持第三方平台sendcloud

1.1. SendUtil工具类(推荐)

关键类:net.mingsoft.msend.util.SendUtil.java

关键方法:SendUtil.send(...)

[!tip] configType就是自定义配置的名字

public class SendUtil {

    private static final Logger LOG = LoggerFactory.getLogger(SendUtil.class);

    /**
     * 发送邮件
     * @param configType      邮件配置的类型 默认:邮件配置|短信配置|sendCloud短信配置|sendCloud邮件配置(configType就是自定义配置的名字)
     * @param receive          接收用户
     * @param code            模板编码
     * @param values        根据values.key值替换替换模版里面内容的${key},
     * @return
     */
    public static boolean send(String configType,String code, String receive, Map values)  {
        //获取配置信息
        Map<String, String> config = ConfigUtil.getMap(configType);
        if (config == null) {
            throw new BusinessException(String.format("%s不存在", configType));
        }
        if (StringUtils.isBlank(config.get("class"))) {
            throw new BusinessException(String.format("{没有配置监听类 calss"));
        }
        ITemplateBiz templateBiz = SpringUtil.getBean(ITemplateBiz.class);
        TemplateEntity template = new TemplateEntity();
        template.setTemplateCode(code);
        template = (TemplateEntity) templateBiz.getEntity(template);
        if(template==null) {
            throw new BusinessException("邮件模板未找到");
        }
        if(StringUtils.isBlank(receive)) {
            throw new BusinessException("接收人不能为空");
        }
        String[] toUser = receive.split(",");
        BaseSendService sendService = (BaseSendService)SpringUtil.getBean(String.valueOf(config.get("class")));
        return sendService.send(config,toUser,template,values);
    }



}

[!tip] 实际业务开发推荐SendUtil方式调用,必须严谨、安全
configType就是自定义配置的名字

1.1.1. 范例

邮件发送

//将一下代码片段复制到业务代码中,根据实际的模板参数进行修改,直接调用即可
Map params = new HashMap();

//会根据code的值填充邮箱模版或者短信模版的${code} 收件人收到内容就是 “验证码8888”
params.put("code",8888);

// 调用SendUtil.send发送消息,sendType使用HTML格式
boolean status = SendUtil.send("邮件配置","bindPhone","123@163.com",params);

if(status){
//发送成功
}else{
//发送失败
}

邮件发送实体

//将一下代码片段复制到业务代码中,根据实际的模板参数进行修改,直接调用即可
Map params=new HashMap();

// 把实体类转Map,不需要的字段可以过滤掉
params=BeanUtil.beanToMap(entity,params,CopyOptions.create().setIgnoreProperties("createDate",
"del",
"updateDate"));

// 还需要其他参数,和下方一样put
//会根据code的值填充邮箱模版或者短信模版的${code} 收件人收到内容就是 “验证码8888”
params.put("code",8888);

// 调用SendUtil.send发送消息,sendType使用HTML格式
boolean status = SendUtil.send("邮件配置","bindPhone","123@163.com",params);

if(status){ 
//发送成功
}else{
//发送失败
}

[!tip] 非字符串类型会转换失败,不需要可以过滤掉,如果必要参数就先转成字符串类型

短信发送

//将一下代码片段复制到业务代码中,根据实际的模板参数进行修改,直接调用即可
Map params = new HashMap();

//会根据code的值填充邮箱模版或者短信模版的${code} 收件人收到内容就是 “验证码8888”
params.put("code",8888);

//调用SendUtil.send发送消息,sendType使用HTML格式
boolean status = SendUtil.send("短信配置","bindPhone","1888888888",params);
if(status){
//发送成功
}else
//发送失败
}

1.1.2. sendCloud发送短信范例(推荐)

sendCloud文档

sendCloud配置

签名指短信签名,如[xxx科技]...短信内容

消息模板配置

发送代码示例

...
<el-form-item label="联系电话" prop="phone">
    <el-input
            v-model="form.phone"
            :disabled="false"
            :readonly="false"
            maxlength="11"
            :style="{width:  '100%'}"
            :clearable="true"
            placeholder="请输入手机号">
    </el-input>
</el-form-item>
<el-form-item  label="验证码" prop="randCode">
    <el-row
          :gutter=0
          justify="start" align="top">
    <el-col :span="14">
        <el-input
              v-model="form.randCode"
              :disabled="false"
              :readonly="false"
              :clearable="true"
              placeholder="请输入验证码">
        </el-input>
    </el-col>
    <el-col :span=10>
      <div style="display: flex; height: 38px;">
        <img :src="verifyCode" class="code-img" @click="code" style="cursor: pointer"
             alt="点击换一张"/>
        <div @click="code">
        </div>
      </div>
    </el-col>
    </el-row>
</el-form-item>
<el-form-item  label="短信验证码" prop="phoneCode">
  <el-row
          :gutter=0
          justify="start" align="top">
    <el-col :span=13>
      <el-input
              v-model="form.phoneCode"
              :disabled="false"
              :readonly="false"
              :clearable="true"
              placeholder="请输入验证码">
      </el-input>
    </el-col>
    <el-col :span=11>
      <el-button type="info" plain @click="getCode()">
      </el-button>
    </el-col>
  </el-row>
</el-form-item>
...
getCode:function (){
    ...
    ms.http.post(ms.base + '/sendCode.do',{
        receive: 接收手机号,
        modelCode:"code",
        configType:"sendCloud短信配置",
        rand_code: randCode
    }).then(function (data) {
        if (data.result) {
            that.$notify({
                title: '成功',
                message: '验证码已发出,请注意查收!',
                type: 'success'
            });
        }
    })
    ...
}

2. 扩展发送

可以灵活扩展第三方发送接口,开发者可以快速的扩展发送接口,

扩展步骤

1、代码生成器 设计好发送表单,表单里面必须包含 class 字典

2、通过自定义配置导入

3、创建一个类继承 net.mingsoft.msend.service.BaseSendService 基础类

4、实现send方法

5、通过 SendUtil.send方法调用扩展的接口

2.1. 范例

import net.mingsoft.basic.util.SpringUtil;
import net.mingsoft.msend.biz.ILogBiz;
import net.mingsoft.msend.entity.LogEntity;
import net.mingsoft.msend.entity.TemplateEntity;
import net.mingsoft.msend.util.MailUtil;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.Map;

@Service("mailSendService")
public class MailSendService extends BaseSendService { //继承 BaseSendService

  /**
     * 发送
     *
     * @param config 配置的类型
     * @param toUser     接收用户
     * @param template   模板内容
     * @param values     根据values.key值替换替换模版里面内容的${key},
     * @return
     */
    @Override
    public boolean send(Map<String,String> config, String[] toUser, TemplateEntity template, Map values) {
        String mailContent = this.rendering(values, template.getTemplateMail());


        //发送
        MailUtil.sendHtml(config.get("mailServer"),
                Integer.parseInt(String.valueOf(config.get("mailPort"))),
                config.get("mailName"),
                config.get("mailPassword"),
                config.get("mailFormName"),
                template.getTemplateTitle(), mailContent, toUser);

        //写入日志
        ILogBiz logBiz = SpringUtil.getBean(ILogBiz.class);
        LogEntity log = new LogEntity();
        for (int i = 0; i < toUser.length; i++) {
            log.setLogType(MAIL);
            log.setLogDatetime(new Date());
            log.setLogContent("mail类型");
            log.setLogReceive(toUser[i]);
            logBiz.saveEntity(log);
        }
        return true;
    }
}

[!tip] 通过 自定义配置 工具类获取对应的配置参数

2.2. web接口

ResponseEntity<JSONObject> content  = RestTemplateUtil.post(this.getUrl(request) + "/msend/send.do",RestTemplateUtil.getHeaders(request),requestBody,JSONObject.class);
Copyright © mingsoft.net 2012-2022 all right reserved,powered by Gitbook该文件修订时间: 2023-11-18 11:23:02

results matching ""

    No results matching ""

    results matching ""

      No results matching ""