From fce1cf808203be4ae80b758bd715fd72b7e90f1d Mon Sep 17 00:00:00 2001 From: thinkgem Date: Mon, 18 Mar 2019 22:53:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E6=B6=88=E6=81=AF=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E7=B1=BB=E7=A7=BB=E5=8A=A8=E5=88=B0core?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=B8=8B=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/msg/send/EmailSendService.java | 78 ++++++++++++++++++ .../modules/msg/send/SmsSendService.java | 79 +++++++++++++++++++ 2 files changed, 157 insertions(+) create mode 100644 modules/core/src/main/java/com/jeesite/modules/msg/send/EmailSendService.java create mode 100644 modules/core/src/main/java/com/jeesite/modules/msg/send/SmsSendService.java diff --git a/modules/core/src/main/java/com/jeesite/modules/msg/send/EmailSendService.java b/modules/core/src/main/java/com/jeesite/modules/msg/send/EmailSendService.java new file mode 100644 index 00000000..875df7fc --- /dev/null +++ b/modules/core/src/main/java/com/jeesite/modules/msg/send/EmailSendService.java @@ -0,0 +1,78 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + */ +package com.jeesite.modules.msg.send; + +import org.apache.commons.mail.HtmlEmail; +import org.springframework.stereotype.Service; + +import com.jeesite.common.config.Global; +import com.jeesite.common.lang.ExceptionUtils; +import com.jeesite.common.lang.StringUtils; +import com.jeesite.common.service.BaseService; +import com.jeesite.modules.msg.entity.MsgPush; +import com.jeesite.modules.msg.entity.content.EmailMsgContent; +import com.jeesite.modules.msg.send.MsgSendService; + +/** + * 电子邮件发送服务实现 + * @author ThinkGem + * @version 2018年5月13日 + */ +@Service +public class EmailSendService extends BaseService implements MsgSendService{ + + @Override + public void sendMessage(MsgPush msgPush) { + try{ + String fromAddress = Global.getProperty("msg.email.fromAddress"); + String fromPassword = Global.getProperty("msg.email.fromPassword"); + String fromHostName = Global.getProperty("msg.email.fromHostName"); + Integer smtpPort = Global.getPropertyToInteger("msg.email.smtpPort", "25"); + String sslOnConnect = Global.getProperty("msg.email.sslOnConnect", "false"); + String sslSmtpPort = Global.getProperty("msg.email.sslSmtpPort", "465"); + + HtmlEmail htmlEmail = new HtmlEmail(); + htmlEmail.setCharset("utf-8"); + htmlEmail.setFrom(fromAddress); + htmlEmail.setAuthentication(fromAddress, fromPassword); + htmlEmail.setHostName(fromHostName); + htmlEmail.setSmtpPort(smtpPort); + if ("true".equals(sslOnConnect)) { + htmlEmail.setSSLOnConnect(true); + htmlEmail.setSslSmtpPort(sslSmtpPort); + } + htmlEmail.addTo(msgPush.getReceiveCode(), msgPush.getReceiveUserName()); + + // 内容 + EmailMsgContent content = msgPush.parseMsgContent(EmailMsgContent.class); + htmlEmail.setSubject(content.getTitle()); + htmlEmail.setMsg(content.getContent()); + + // 抄送 + if (StringUtils.isNotBlank(content.getCc())) { + for (String email : content.getCc().split(";")) { + htmlEmail.addCc(email); + } + } + // 密送 + if (StringUtils.isNotBlank(content.getBcc())) { + for (String email : content.getBcc().split(";")) { + htmlEmail.addBcc(email); + } + } + + // 发送邮件 + String result = htmlEmail.send(); + + // 发送成功 + msgPush.setPushStatus(MsgPush.PUSH_STATUS_SUCCESS); + msgPush.addPushReturnContent(result); + + } catch (Exception ex) { + logger.error("发送邮件失败! ", ex); + msgPush.setPushStatus(MsgPush.PUSH_STATUS_FAIL); + msgPush.addPushReturnContent(ExceptionUtils.getStackTraceAsString(ex)); + } + } +} diff --git a/modules/core/src/main/java/com/jeesite/modules/msg/send/SmsSendService.java b/modules/core/src/main/java/com/jeesite/modules/msg/send/SmsSendService.java new file mode 100644 index 00000000..4f9cd0f0 --- /dev/null +++ b/modules/core/src/main/java/com/jeesite/modules/msg/send/SmsSendService.java @@ -0,0 +1,79 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + */ +package com.jeesite.modules.msg.send; + +import java.util.Date; +import java.util.Map; + +import org.springframework.stereotype.Service; + +import com.jeesite.common.lang.ExceptionUtils; +import com.jeesite.common.lang.ObjectUtils; +import com.jeesite.common.mapper.JsonMapper; +import com.jeesite.common.msg.SmsUtils; +import com.jeesite.common.service.BaseService; +import com.jeesite.modules.msg.entity.MsgPush; +import com.jeesite.modules.msg.entity.content.SmsMsgContent; +import com.jeesite.modules.msg.send.MsgSendService; + +/** + * 短信发送服务实现 + * @author ThinkGem + * @version 2018年5月13日 + */ +@Service +public class SmsSendService extends BaseService implements MsgSendService{ + + @Override + public void sendMessage(MsgPush msgPush) { + try{ +// String url = Global.getProperty("msg.sms.url"); +// String data = Global.getProperty("msg.sms.data"); +// String prefix = Global.getProperty("msg.sms.prefix", ""); +// String suffix = Global.getProperty("msg.sms.suffix", ""); +// Connection conn = Jsoup.connect(url); +// conn.postDataCharset("UTF-8"); +// conn.method(Method.POST); +// for (String param : StringUtils.split(data, "&")){ +// String[] ss = StringUtils.split(param, "="); +// if (ss.length == 1){ +// conn.data(ss[0], ""); +// }else if (ss.length == 2){ +// conn.data(ss[0], ss[1]); +// } +// } +// // 手机号码 +// conn.data("mobile", msgPush.getReceiveCode()); +// // 短信内容 +// SmsMsgContent content = msgPush.parseMsgContent(SmsMsgContent.class); +// conn.data("content", prefix + content.getContent() + suffix); +// // 发送短信 +// String result = conn.execute().body(); +// String result = "{result:0,message:\"ok\"}"; // 模拟发送结果 +// Map map = JsonMapper.fromJson(result, Map.class); + + // 发送短信 + SmsMsgContent content = msgPush.parseMsgContent(SmsMsgContent.class); + String result = SmsUtils.send(content.getContent(), msgPush.getReceiveCode()); + Map map = JsonMapper.fromJson(result, Map.class); + + // 发送成功 + if (ObjectUtils.toInteger(map.get("result")) == 0){ + msgPush.setPushStatus(MsgPush.PUSH_STATUS_SUCCESS); + msgPush.addPushReturnContent(result); + } + // 发送失败 + else{ + throw new RuntimeException(result); + } + + } catch (Exception ex) { + logger.error("发送短信失败! ", ex); + msgPush.setPushDate(new Date()); + msgPush.setPushStatus(MsgPush.PUSH_STATUS_FAIL); + msgPush.addPushReturnContent(ExceptionUtils.getStackTraceAsString(ex)); + } + } + +}