From b137dbdd93c47bf727a9db3a50a592eacf54b0af Mon Sep 17 00:00:00 2001 From: wenc000 <450292408@qq.com> Date: Fri, 31 Jul 2020 19:24:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B8=B8=E9=87=8F=E3=80=81?= =?UTF-8?q?=E5=8F=91=E9=80=81=E9=82=AE=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cloud-common/pom.xml | 6 + .../cm/common/constants/ISystemConstant.java | 11 ++ .../common/utils/email/MailAuthenticator.java | 27 +++ .../cm/common/utils/email/MailSenderInfo.java | 180 ++++++++++++++++++ .../utils/email/SimpleMailSenderUtil.java | 136 +++++++++++++ 5 files changed, 360 insertions(+) create mode 100644 cloud-common/src/main/java/com/cm/common/utils/email/MailAuthenticator.java create mode 100644 cloud-common/src/main/java/com/cm/common/utils/email/MailSenderInfo.java create mode 100644 cloud-common/src/main/java/com/cm/common/utils/email/SimpleMailSenderUtil.java diff --git a/cloud-common/pom.xml b/cloud-common/pom.xml index 75e471c..4bafd27 100644 --- a/cloud-common/pom.xml +++ b/cloud-common/pom.xml @@ -236,6 +236,12 @@ org.springframework.security spring-security-jwt + + + com.sun.mail + javax.mail + + \ No newline at end of file diff --git a/cloud-common/src/main/java/com/cm/common/constants/ISystemConstant.java b/cloud-common/src/main/java/com/cm/common/constants/ISystemConstant.java index ca35df7..56c318a 100644 --- a/cloud-common/src/main/java/com/cm/common/constants/ISystemConstant.java +++ b/cloud-common/src/main/java/com/cm/common/constants/ISystemConstant.java @@ -181,4 +181,15 @@ public interface ISystemConstant { */ String SESSION_WECHAT_ACCESS_TOKEN = "SESSION_WECHAT_ACCESS_TOKEN"; + /** + * 日期格式化,年月日 + */ + String DATE_FORMATTER_YYYY_MM_DD = "yyyy-MM-dd"; + + /** + * 日期格式化,年月日时分秒 + */ + String DATE_FORMATTER_YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; + + } diff --git a/cloud-common/src/main/java/com/cm/common/utils/email/MailAuthenticator.java b/cloud-common/src/main/java/com/cm/common/utils/email/MailAuthenticator.java new file mode 100644 index 0000000..a252a18 --- /dev/null +++ b/cloud-common/src/main/java/com/cm/common/utils/email/MailAuthenticator.java @@ -0,0 +1,27 @@ +package com.cm.common.utils.email; + +/** + * 发送邮件需要使用的基本信息 + * + * @version 2.0 + */ + +import javax.mail.*; + +public class MailAuthenticator extends Authenticator { + String userName = null; + String password = null; + + public MailAuthenticator() { + } + + public MailAuthenticator(String username, String password) { + this.userName = username; + this.password = password; + } + + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(this.userName, this.password); + } +} diff --git a/cloud-common/src/main/java/com/cm/common/utils/email/MailSenderInfo.java b/cloud-common/src/main/java/com/cm/common/utils/email/MailSenderInfo.java new file mode 100644 index 0000000..7ba094a --- /dev/null +++ b/cloud-common/src/main/java/com/cm/common/utils/email/MailSenderInfo.java @@ -0,0 +1,180 @@ +package com.cm.common.utils.email; +/** + * 发送邮件需要使用的基本信息 + * + * @author FH QQ 313596790[青苔] + * 修改时间:2015年7月27日 + * @version 2.0 + */ + +import java.util.Arrays; +import java.util.Properties; + +public class MailSenderInfo { + /** + * 发送邮件的服务器的IP和端口 + */ + private String mailServerHost; + private Integer mailServerPort = 25; + /** + * 邮件发送者的地址 + */ + private String fromAddress; + /** + * 邮件接收者的地址 + */ + private String toAddress; + /** + * 抄送人 + */ + private String toCc; + /** + * 登陆邮件发送服务器的用户名和密码 + */ + private String userName; + private String password; + /** + * 是否需要身份验证 + */ + private boolean validate = false; + /** + * 邮件主题 + */ + private String subject; + /** + * 邮件的文本内容 + */ + private String content; + /** + * 邮件附件的文件名 + */ + private String[] attachFileNames; + + /** + * 获得邮件会话属性 + */ + public Properties getProperties() { + Properties properties = new Properties(); + properties.put("mail.smtp.host", this.mailServerHost); + properties.put("mail.smtp.port", this.mailServerPort); + properties.put("mail.smtp.auth", validate ? "true" : "false"); + return properties; + } + + public String getMailServerHost() { + return mailServerHost == null ? "" : mailServerHost.trim(); + } + + public void setMailServerHost(String mailServerHost) { + this.mailServerHost = mailServerHost; + } + + public Integer getMailServerPort() { + return mailServerPort; + } + + public void setMailServerPort(Integer mailServerPort) { + this.mailServerPort = mailServerPort; + } + + public String getFromAddress() { + return fromAddress == null ? "" : fromAddress.trim(); + } + + public void setFromAddress(String fromAddress) { + this.fromAddress = fromAddress; + } + + public String getToAddress() { + return toAddress == null ? "" : toAddress.trim(); + } + + public void setToAddress(String toAddress) { + this.toAddress = toAddress; + } + + public String getToCc() { + return toCc == null ? "" : toCc.trim(); + } + + public void setToCc(String toCc) { + this.toCc = toCc; + } + + public String getUserName() { + return userName == null ? "" : userName.trim(); + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getPassword() { + return password == null ? "" : password.trim(); + } + + public void setPassword(String password) { + this.password = password; + } + + public boolean isValidate() { + return validate; + } + + public void setValidate(boolean validate) { + this.validate = validate; + } + + public String getSubject() { + return subject == null ? "" : subject.trim(); + } + + public void setSubject(String subject) { + this.subject = subject; + } + + public String getContent() { + return content == null ? "" : content.trim(); + } + + public void setContent(String content) { + this.content = content; + } + + public String[] getAttachFileNames() { + return attachFileNames; + } + + public void setAttachFileNames(String[] attachFileNames) { + this.attachFileNames = attachFileNames; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("{"); + sb.append("\"mailServerHost\":") + .append("\"").append(mailServerHost).append("\""); + sb.append(",\"mailServerPort\":") + .append("\"").append(mailServerPort).append("\""); + sb.append(",\"fromAddress\":") + .append("\"").append(fromAddress).append("\""); + sb.append(",\"toAddress\":") + .append("\"").append(toAddress).append("\""); + sb.append(",\"toCc\":") + .append("\"").append(toCc).append("\""); + sb.append(",\"userName\":") + .append("\"").append(userName).append("\""); + sb.append(",\"password\":") + .append("\"").append(password).append("\""); + sb.append(",\"validate\":") + .append(validate); + sb.append(",\"subject\":") + .append("\"").append(subject).append("\""); + sb.append(",\"content\":") + .append("\"").append(content).append("\""); + sb.append(",\"attachFileNames\":") + .append(Arrays.toString(attachFileNames)); + sb.append('}'); + return sb.toString(); + } +} diff --git a/cloud-common/src/main/java/com/cm/common/utils/email/SimpleMailSenderUtil.java b/cloud-common/src/main/java/com/cm/common/utils/email/SimpleMailSenderUtil.java new file mode 100644 index 0000000..a6ec6f3 --- /dev/null +++ b/cloud-common/src/main/java/com/cm/common/utils/email/SimpleMailSenderUtil.java @@ -0,0 +1,136 @@ +package com.cm.common.utils.email; + +import org.apache.commons.lang3.StringUtils; + +import javax.mail.*; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeBodyPart; +import javax.mail.internet.MimeMessage; +import javax.mail.internet.MimeMultipart; +import java.util.Date; +import java.util.Properties; + + +/** + * 邮件发送器 + */ +public class SimpleMailSenderUtil { + /** + * 以文本格式发送邮件 + * + * @param mailInfo 待发送的邮件的信息 + */ + public boolean sendTextMail(MailSenderInfo mailInfo) throws Exception { + Message mailMessage = getMessage(mailInfo); + // 设置邮件消息的主要内容 + String mailContent = mailInfo.getContent(); + mailMessage.setText(mailContent); + // 发送邮件 + Transport.send(mailMessage); + return true; + } + + /** + * 以HTML格式发送邮件 + * + * @param mailInfo 待发送的邮件信息 + */ + public boolean sendHtmlMail(MailSenderInfo mailInfo) throws Exception { + Message mailMessage = getMessage(mailInfo); + // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象 + Multipart mainPart = new MimeMultipart(); + // 创建一个包含HTML内容的MimeBodyPart + BodyPart html = new MimeBodyPart(); + // 设置HTML内容 + html.setContent(mailInfo.getContent(), "text/html; charset=utf-8"); + mainPart.addBodyPart(html); + // 将MiniMultipart对象设置为邮件内容 + mailMessage.setContent(mainPart); + // 发送邮件 + Transport.send(mailMessage); + return true; + } + + private Message getMessage(MailSenderInfo mailInfo) throws MessagingException { + // 判断是否需要身份认证 + MailAuthenticator authenticator = null; + Properties pro = mailInfo.getProperties(); + if (mailInfo.isValidate()) { + // 如果需要身份认证,则创建一个密码验证器 + authenticator = new MailAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); + } + // 根据邮件会话属性和密码验证器构造一个发送邮件的session + Session sendMailSession = Session.getDefaultInstance(pro, authenticator); + // 根据session创建一个邮件消息 + Message mailMessage = new MimeMessage(sendMailSession); + // 创建邮件发送者地址 + Address from = new InternetAddress(mailInfo.getFromAddress()); + // 设置邮件消息的发送者 + mailMessage.setFrom(from); + // 创建邮件的接收者地址,并设置到邮件消息中 + InternetAddress[] to = InternetAddress.parse(mailInfo.getToAddress()); + mailMessage.setRecipients(Message.RecipientType.TO, to); + if (!StringUtils.isBlank(mailInfo.getToCc())) { + InternetAddress[] cc = InternetAddress.parse(mailInfo.getToCc()); + mailMessage.setRecipients(Message.RecipientType.CC, cc); + } + // 设置邮件消息的主题 + mailMessage.setSubject(mailInfo.getSubject()); + // 设置邮件消息发送的时间 + mailMessage.setSentDate(new Date()); + return mailMessage; + } + + /** + * @param SMTP 邮件服务器 + * @param PORT 端口 + * @param EMAIL 本邮箱账号 + * @param PAW 本邮箱密码 + * @param toEMAIL 对方箱账号 + * @param toCC 抄送账号 + * @param TITLE 标题 + * @param CONTENT 内容 + * @param TYPE 1:文本格式;2:HTML格式 + */ + public static boolean sendEmail(String SMTP, Integer PORT, String EMAIL, String PAW, String toEMAIL, String toCC, String TITLE, String CONTENT, String TYPE) throws Exception { + boolean isFlag = StringUtils.isBlank(SMTP) || PORT == null || StringUtils.isBlank(EMAIL) || StringUtils.isBlank(PAW) || StringUtils.isBlank(toEMAIL) || StringUtils.isBlank(TITLE) || StringUtils.isBlank(CONTENT) || StringUtils.isBlank(TYPE); + if (isFlag) { + return false; + } + //这个类主要是设置邮件 + MailSenderInfo mailInfo = new MailSenderInfo(); + mailInfo.setMailServerHost(SMTP); + mailInfo.setMailServerPort(PORT); + mailInfo.setValidate(true); + mailInfo.setUserName(EMAIL); + mailInfo.setPassword(PAW); + mailInfo.setFromAddress(EMAIL); + mailInfo.setToAddress(toEMAIL); + mailInfo.setToCc(toCC); + mailInfo.setSubject(TITLE); + mailInfo.setContent(CONTENT); + //这个类主要来发送邮件 + SimpleMailSenderUtil sms = new SimpleMailSenderUtil(); + if ("1".equals(TYPE)) { + return sms.sendTextMail(mailInfo); + } + return sms.sendHtmlMail(mailInfo); + } + + public static void main(String[] args) throws Exception { + //这个类主要是设置邮件 + MailSenderInfo mailInfo = new MailSenderInfo(); + mailInfo.setMailServerHost("smtp.163.com"); + mailInfo.setMailServerPort(25); + mailInfo.setValidate(true); + mailInfo.setUserName("dpdbd001@163.com"); + mailInfo.setPassword("WAASUQNNVITVXDJS"); + mailInfo.setFromAddress("dpdbd001@163.com"); + mailInfo.setToAddress("450292408@qq.com "); + mailInfo.setSubject("123"); + mailInfo.setContent("123"); + SimpleMailSenderUtil simpleMailSenderUtil = new SimpleMailSenderUtil(); + simpleMailSenderUtil.sendTextMail(mailInfo); + } + +}