package com.ruoyi.common.utils; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Component; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import javax.validation.constraints.NotNull; import java.io.File; import java.io.IOException; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @ClassName EmailInUtil * @Description 邮件发送工具 */ @Component @Data @Slf4j public class EmailOutUtil { private static Pattern emailPattern = Pattern.compile("^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$"); // private static Pattern phonePattern = Pattern.compile("0?(13|14|15|18)[0-9]{9}"); private static Pattern phonePattern = Pattern.compile("^1\\d{10}$"); // @Autowired // private JavaMailSender mailSender; // 发送发邮箱地址(外网地址) // @Value("${spring.mail-out-network.from}") // private static String fromOut; @Value("${spring.mail.host}") private String hostOut; @Value("${spring.mail.username}") private String usernameOut; @Value("${spring.mail.password}") private String passwordOut; @Value("${spring.mail.port}") private Integer portOut; public JavaMailSender rebuildMailSender() { JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); mailSender.setHost(hostOut); mailSender.setUsername(usernameOut); mailSender.setPassword(passwordOut); mailSender.setPort(portOut); mailSender.setProtocol("smtp"); mailSender.setDefaultEncoding("UTF-8"); return mailSender; } /** * 发送纯文本邮件信息 * * @param to 接收方 * @param subject 邮件主题 * @param content 邮件内容(发送内容) */ public void sendMessage(String to, String subject, String content, String from, JavaMailSender mailSender) { // 创建一个邮件对象 SimpleMailMessage msg = new SimpleMailMessage(); msg.setFrom(from); msg.setTo(to); // 设置邮件主题 msg.setSubject(subject); // 设置邮件内容 msg.setText(content); // 发送邮件 mailSender.send(msg); ////System.out.println("发送成功:" + from + ":to:" + to); } /** * 发送带附件的邮件信息 * * @param to 接收方 * @param subject 邮件主题 * @param content 邮件内容(发送内容) * @param fileList 文件集合 // 可发送多个附件 */ public void sendMessageCarryFiles(String to, String subject, String content, List fileList, String from, @NotNull JavaMailSender mailSender) { MimeMessage mimeMessage = mailSender.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); helper.setFrom(from); helper.setTo(to); // 设置邮件主题 helper.setSubject(subject); // 设置邮件内容 helper.setText(content); // 添加附件(多个) if (fileList != null && fileList.size() > 0) { for (File file : fileList) { helper.addAttachment(file.getName(), file); } } } catch (MessagingException e) { e.printStackTrace(); } // 发送邮件 mailSender.send(mimeMessage); } /** * 发送带附件的邮件信息 * * @param to 接收方 * @param subject 邮件主题 * @param content 邮件内容(发送内容) * @param file 单个文件 */ public void sendMessageCarryFile(String to, String subject, String content, File file, String from, JavaMailSender mailSender) { MimeMessage mimeMessage = mailSender.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); helper.setFrom(from); helper.setTo(to); // 设置邮件主题 helper.setSubject(subject); // 设置邮件内容 helper.setText(content); // 单个附件 helper.addAttachment(file.getName(), file); } catch (MessagingException e) { e.printStackTrace(); } // 发送邮件 mailSender.send(mimeMessage); } /** * 初始化内外网邮件发送对象 * * @param num */ // public static JavaMailSender initJavaMailSender(Integer num) { // if (num != null && num == 1) { // //内网 // return rebuildMailSender(hostIn, usernameIn, passwordIn, Integer.parseInt(portIn), "smtps"); // } else { // //外网 // return rebuildMailSender(hostOut, usernameOut, passwordOut, Integer.parseInt(portOut), "smtps"); // } // } // public static String getInnerFrom() { // return EmailInUtil; // } // // public static String getOutterFrom() { // return fromOut; // } /** * 验证邮箱格式 * * @param str * @return */ public static boolean isEmail(String str) { boolean flag = false; Matcher matcher = emailPattern.matcher(str); if (matcher.matches()) { flag = true; } return flag; } public static boolean isPhoneNumber(String str) { boolean flag = false; Matcher matcher = phonePattern.matcher(str); if (matcher.matches()) { flag = true; } return flag; } }