master
wangbing 4 years ago
parent e912268968
commit bcb05530e6

@ -2,12 +2,13 @@ package com.example.frame.mail;
import com.example.frame.auth.LocalData;
import com.example.frame.mail.message.WFileMessage;
import com.example.frame.mail.message.WHtmlInlineMessage;
import com.example.frame.mail.message.WHtmlMessage;
import com.example.frame.mail.message.WInlineMessage;
import com.example.frame.mail.message.WMessage;
import com.example.frame.mail.message.WTextMessage;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.MessagingException;
@ -28,125 +29,118 @@ import java.io.File;
*/
public class WMailSender {
/**
*
*
* @param message
* @param senders
*/
public static void send(WTextMessage message, JavaMailSender... senders) {
if (senders.length == 0) {
JavaMailSender bean = LocalData.getBean(JavaMailSender.class);
if (bean == null) {
throw new RuntimeException("not find JavaMailSender!");
}
senders = new JavaMailSender[]{bean};
private static boolean send(WHtmlMessage message, JavaMailSender sender) {
try {
MimeMessage mimeMessage = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
helper.setFrom(message.getFrom());
helper.setTo(message.getTo());
helper.setSubject(message.getSubject());
helper.setText(message.getContent());
sender.send(mimeMessage);
} catch (MessagingException e) {
e.printStackTrace();
return false;
}
for (JavaMailSender sender : senders) {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(message.getFrom());
simpleMailMessage.setTo(message.getTo());
simpleMailMessage.setSubject(message.getSubject());
simpleMailMessage.setText(message.getContent());
sender.send(simpleMailMessage);
return true;
}
private static boolean send(WTextMessage message, JavaMailSender sender) {
try {
MimeMessage mimeMessage = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
helper.setFrom(message.getFrom());
helper.setTo(message.getTo());
helper.setSubject(message.getSubject());
helper.setText(message.getContent(), true);
sender.send(mimeMessage);
} catch (MessagingException e) {
e.printStackTrace();
return false;
}
return true;
}
/**
* Html
*
* @param message
* @param senders
*/
public static void send(WHtmlMessage message, JavaMailSender... senders) {
if (senders.length == 0) {
JavaMailSender bean = LocalData.getBean(JavaMailSender.class);
if (bean == null) {
throw new RuntimeException("not find JavaMailSender!");
private static boolean send(WFileMessage message, JavaMailSender sender) {
try {
MimeMessage mimeMessage = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
helper.setFrom(message.getFrom());
helper.setTo(message.getTo());
helper.setSubject(message.getSubject());
helper.setText(message.getContent(), true);
if (message.getFiles() != null && message.getFiles().size() > 0) {
for (File file : message.getFiles()) {
helper.addAttachment(file.getName(), file);
}
}
senders = new JavaMailSender[]{bean};
sender.send(mimeMessage);
} catch (MessagingException e) {
e.printStackTrace();
return false;
}
for (JavaMailSender sender : senders) {
try {
MimeMessage mimeMessage = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
helper.setTo(message.getTo());
helper.setFrom(message.getFrom());
helper.setSubject(message.getSubject());
helper.setText(message.getContent(), true);
sender.send(mimeMessage);
} catch (MessagingException e) {
e.printStackTrace();
return true;
}
private static boolean send(WInlineMessage message, JavaMailSender sender) {
try {
MimeMessage mimeMessage = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
helper.setFrom(message.getFrom());
helper.setTo(message.getTo());
helper.setSubject(message.getSubject());
helper.setText(message.getContent(), true);
if (message.getResMap() != null && message.getResMap().size() > 0) {
for (String resId : message.getResMap().keySet()) {
FileSystemResource res = new FileSystemResource(message.getResMap().get(resId));
helper.addInline(resId, res);
}
}
sender.send(mimeMessage);
} catch (MessagingException e) {
e.printStackTrace();
return false;
}
return true;
}
/**
*
*
*
* @param message
* @param senders
* @return
*/
public static void send(WFileMessage message, JavaMailSender... senders) {
if (senders.length == 0) {
JavaMailSender bean = LocalData.getBean(JavaMailSender.class);
if (bean == null) {
throw new RuntimeException("not find JavaMailSender!");
}
senders = new JavaMailSender[]{bean};
}
for (JavaMailSender sender : senders) {
try {
MimeMessage mimeMessage = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
helper.setTo(message.getTo());
helper.setFrom(message.getFrom());
helper.setSubject(message.getSubject());
helper.setText(message.getContent(), true);
if (message.getFiles() != null && message.getFiles().size() > 0) {
for (File file : message.getFiles()) {
helper.addAttachment(file.getName(), file);
}
}
sender.send(mimeMessage);
} catch (MessagingException e) {
e.printStackTrace();
}
}
public static boolean send(WMessage message) {
return send(message, null);
}
/**
*
*
*
* @param message
* @param senders
* @param sender
* @return
*/
public static void send(WHtmlInlineMessage message, JavaMailSender... senders) {
if (senders.length == 0) {
JavaMailSender bean = LocalData.getBean(JavaMailSender.class);
if (bean == null) {
throw new RuntimeException("not find JavaMailSender!");
}
senders = new JavaMailSender[]{bean};
public static boolean send(WMessage message, JavaMailSender sender) {
if (sender == null) {
sender = LocalData.getBean(JavaMailSender.class);
}
for (JavaMailSender sender : senders) {
try {
MimeMessage mimeMessage = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
helper.setTo(message.getTo());
helper.setFrom(message.getFrom());
helper.setSubject(message.getSubject());
helper.setText(message.getContent(), true);
if (message.getResMap() != null && message.getResMap().size() > 0) {
for (String resId : message.getResMap().keySet()) {
FileSystemResource res = new FileSystemResource(message.getResMap().get(resId));
helper.addInline(resId, res);
}
}
sender.send(mimeMessage);
} catch (MessagingException e) {
e.printStackTrace();
}
if (sender == null) {
throw new RuntimeException("not find JavaMailSender!");
}
if (message.getFrom() == null && sender instanceof JavaMailSenderImpl) {
message.setFrom(((JavaMailSenderImpl) sender).getUsername());
}
if (message instanceof WTextMessage) {
return send((WTextMessage) message, sender);
} else if (message instanceof WHtmlMessage) {
return send((WHtmlMessage) message, sender);
} else if (message instanceof WFileMessage) {
return send((WFileMessage) message, sender);
} else if (message instanceof WInlineMessage) {
return send((WInlineMessage) message, sender);
} else {
throw new RuntimeException("Unimplemented message type!");
}
}
}

@ -1,32 +0,0 @@
package com.example.frame.mail.message;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
/**
* html
* <p>
* WHtmlInlineMessage message = new WHtmlInlineMessage();
* message.setSubject("标题");
* message.setContent("html><body><h2>html邮件内容</h2><br><img src=\'cid:" + resId + "\'></img></body></html>");
* message.addRes("resId", new File("E:\\1.jpg"));
* WMailSender.send(message);
*/
public class WHtmlInlineMessage extends WHtmlMessage {
private Map<String, File> resMap;
public Map<String, File> getResMap() {
return resMap;
}
public void setResMap(Map<String, File> resMap) {
this.resMap = resMap;
}
public void addRes(String resId, File file) {
if (resMap == null) resMap = new HashMap<>();
resMap.put(resId, file);
}
}

@ -3,46 +3,11 @@ package com.example.frame.mail.message;
/**
* Html
* <p>
* WTextMessage message = new WTextMessage();
* WHtmlMessage message = new WHtmlMessage();
* message.setSubject("标题");
* message.setContent("<html><body><h2>HTML邮件内容</h2><br><marquee>飞机飞走了.。。o O 0 ○~~~~~~~</marquee></body></html>");
* WMailSender.send(message);
*/
public class WHtmlMessage {
private String from;
private String to;
private String subject;
private String content;
public class WHtmlMessage extends WMessage {
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}

@ -2,11 +2,11 @@ package com.example.frame.mail.message;
/**
*
* WTextMessage message = new WTextMessage();
* WHtmlMessage message = new WHtmlMessage();
* message.setSubject("标题");
* message.setContent("内容");
* WMailSender.send(message);
*/
public class WTextMessage extends WHtmlMessage {
public class WTextMessage extends WMessage {
}

@ -0,0 +1,87 @@
package com.example.frame.utils;
import com.example.frame.auth.LocalData;
import freemarker.cache.ClassTemplateLoader;
import freemarker.cache.MultiTemplateLoader;
import freemarker.cache.TemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.TemplateExceptionHandler;
import org.springframework.util.ClassUtils;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
public class FreeMarkerUtil {
public static Configuration getDefaultConfiguration() {
return LocalData.getBean(Configuration.class);
}
public static FreeMarkerConfigurer getDefaultConfigurer() {
return LocalData.getBean(FreeMarkerConfigurer.class);
}
public static FreeMarkerConfigurer getNewConfigurer(String basePackagePath) {
FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer();
// 初始化一些配置
Configuration cfg = new Configuration(Configuration.VERSION_2_3_28);
cfg.setDefaultEncoding("UTF-8");
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
cfg.setNumberFormat("0.##");
cfg.setDateFormat("yyyy-MM-dd");
cfg.setDateTimeFormat("yyyy-MM-dd HH:mm:ss");
MultiTemplateLoader multiTemplateLoader = new MultiTemplateLoader(new TemplateLoader[]{
new ClassTemplateLoader(ClassUtils.getDefaultClassLoader(), basePackagePath),
});
cfg.setTemplateLoader(multiTemplateLoader);
freeMarkerConfigurer.setConfiguration(cfg);
return freeMarkerConfigurer;
}
public static Configuration getNewConfiguration(FreeMarkerConfigurer configurer) {
return configurer.getConfiguration();
}
public void outFile(String templatePath, String outPath, Object model) {
Configuration defaultConfiguration = getDefaultConfiguration();
try {
// 获取模板
Template template = defaultConfiguration.getTemplate(templatePath);
// 输出文件路径
Writer wr = new OutputStreamWriter(new FileOutputStream(outPath), "UTF-8");
// 写入
template.process(model, wr);
// 关闭流
wr.close();
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
}
}
public void outOutput(String templatePath, OutputStream outputStream, Object model) {
Configuration defaultConfiguration = getDefaultConfiguration();
try {
// 获取模板
Template template = defaultConfiguration.getTemplate(templatePath);
// 输出文件路径
Writer wr = new OutputStreamWriter(outputStream, "UTF-8");
// 写入
template.process(model, wr);
// 关闭流
wr.close();
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
}
}
}
Loading…
Cancel
Save

Powered by TurnKey Linux.