SpringMVC 使用 JavaMail发送邮件
前言
首先你的邮箱要开启post3服务
1. 在pom.xml中添加依赖
<!-- email -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
2. 邮件发送配置
@Configuration
public class EmailConfig {
@Bean
public MailSender mailSender() throws GeneralSecurityException {
return buildJavaMailSender("*****", "******");
}
private static JavaMailSender buildJavaMailSender(String userName,String passWord) throws GeneralSecurityException {
JavaMailSenderImpl sender = new JavaMailSenderImpl();
// sender.setHost("smtp.office365.com");
sender.setHost("smtp.qq.com");
//发件邮箱
sender.setUsername(userName);
//邮箱的里开启post3服务的密码
sender.setPassword(passWord);
Properties properties = sender.getJavaMailProperties();
properties.put("mail.smtp.auth", true);
properties.put("mail.smtp.timeout", "25000");
properties.put("mail.smtp.starttls.enable", "true");
properties.setProperty("mail.smtp.port", "587");
properties.put("mail.smtp.ssl.protocols", "TLSv1.2");
return sender;
}
}
3. 发送邮件方法
public void sendSimpleEmail(String content,String []toEmails){
/*
//普通文字邮件
SimpleMailMessage message = new SimpleMailMessage();//消息构造器
message.setFrom("2319098944@qq.com");//发件人
message.setTo(userEmail);//收件人
message.setSubject("出库单");//主题
message.setText(content);//正文
mailSender.send(message);*/
//创建消息对象,支持HTML格式的邮箱
MimeMessage mimeMessage = mailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true,"utf-8");
//设置邮件发送人
helper.setFrom("*****");
//设置接收人
helper.setTo(toEmails);
//邮件标题
helper.setSubject("标题");
//content是组装的html页面
helper.setText(content,true);
//发送邮件
mailSender.send(mimeMessage);
} catch (MessagingException e) {
e.printStackTrace();
}
}
我这里只是发送一个表格所以偷懒了直接把html贴到了代码中,其实可以用模板文件来代替比较好 。下面是我的部分模板代码...
public String templeteHtml(String dataHtml){
String htmlTable ="<!DOCTYPE html>" +
"<html lang=\"zh-CN\">" +
"<head>" +
"<meta charset=\"utf-8\" />" +
"<style>" +
"table {" +
"width: 100%;" +
"}" +
"table," +
"td," +
"th {" +
"border: 1px solid #000;" +
"}" +
"" +
"table td {" +
"word-break: keep-all;" +
"white-space: nowrap;" +
"}"
}
...
#最后附上使用模板文件发送邮件的代码
/**
*
* @param templateId 模板文件 "/index.ftl"
* @throws MessagingException
* @throws IOException
* @throws TemplateException
*/
private MimeMessage getMimeMessage(String templateId, EmailMessage m) throws MessagingException, IOException, TemplateException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
//标题
helper.setSubject(m.getTitle());
//发送人
helper.setFrom("******");
String[] tos = new String[m.getTo().size()];
//接收人
helper.setTo(m.getTo().toArray(tos));
helper.setSentDate(new Date());
//freemark模板配置
Configuration cfg = new Configuration(Configuration.VERSION_2_3_23);
//设置模板文件路径 我的模板文件放在项目resource目录中的templates目录下
cfg.setClassForTemplateLoading(this.getClass(), "/templates");
Template template = cfg.getTemplate(templateId);
String process = FreeMarkerTemplateUtils.processTemplateIntoString(template, m.getData());
helper.setText(process, true);
return mimeMessage;
}
然后调用
MimeMessage mimeMessage = getMimeMessage("/index.ftl", m);
mailSender.send(mimeMessage);
本文档详细介绍了如何使用SpringMVC框架结合JavaMail服务来发送邮件,包括在pom.xml中添加相关依赖,配置邮件发送设置,以及提供发送邮件的代码示例。
303

被折叠的 条评论
为什么被折叠?



