(十三)SpringBoot 发送E-mail
2021-06-15 18:02
YPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
标签:ica 邮件内容 mod row work coding ttext red 17.
一:添加mail依赖
org.springframework.boot spring-boot-starter-mail
二:添加邮件配置
打开application.properties
#邮箱配置 spring.mail.protocol=smtp #这里换成自己的邮箱类型 例如qq邮箱就写smtp.qq.com spring.mail.host=smtp.126.com spring.mail.port=25 spring.mail.smtpAuth=true spring.mail.smtpStarttlsEnable=true #这里换成自己的邮箱类型 例如qq邮箱就写smtp.qq.com spring.mail.smtpSslTrust=smtp.126.com #这里换成自己的邮箱账号 spring.mail.username=xxxxxx@126.com #这里换成自己的邮箱密码或授权码 授权码获取可以百度 spring.mail.password=******
三:创建邮件实体类
package com.example.demo.model; import java.util.Map; public class Mail { /** * 发给多个人 */ private String[] to; /** * 抄送 */ private String[] cc; /** * 邮件标题 */ private String subject; /** * 邮件内容 简单文本 和附件邮件必填 其余的不需要 */ private String text; /** * 模板需要的数据 发送模板邮件必填 */ private MaptemplateModel; /** * 选用哪个模板 发送模板邮件必填 */ private String templateName; 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 getText() { return text; } public void setText(String text) { this.text = text; } public Map getTemplateModel() { return templateModel; } public void setTemplateModel(Map templateModel) { this.templateModel = templateModel; } public String getTemplateName() { return templateName; } public void setTemplateName(String templateName) { this.templateName = templateName; } public String[] getCc() { return cc; } public void setCc(String[] cc) { this.cc = cc; } }
四:创建邮件常量类
创建core→constant→MailConstant
package com.example.demo.core.constant; public class MailConstant { /** * 注册的模板名称 */ public static final String RETGISTEREMPLATE = "register"; /** * 模板存放的路径 */ public static final String TEMPLATEPATH = "src/test/java/resources/template/mail"; }
五:创建邮件业务类
MailService
package com.example.demo.service; import com.example.demo.model.Mail; import javax.servlet.http.HttpServletRequest; public interface MailService { /** * 发送简单邮件 * @param mail */ void sendSimpleMail(Mail mail); /** * 发送带附件的邮件 * @param mail * @param request */ void sendAttachmentsMail(Mail mail, HttpServletRequest request); /** * 发送静态资源 一张照片 * @param mail * @throws Exception */ void sendInlineMail(Mail mail) throws Exception; /** * 发送模板邮件 * @param mail */ void sendTemplateMail(Mail mail); }
MailServiceImpl
package com.example.demo.service.impl; import com.example.demo.core.constant.MailConstant; import com.example.demo.core.utils.UploadActionUtil; import com.example.demo.model.Mail; import com.example.demo.service.MailService; import freemarker.template.Template; import freemarker.template.TemplateExceptionHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Service; import org.springframework.ui.freemarker.FreeMarkerTemplateUtils; import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer; import javax.annotation.Resource; import javax.mail.internet.MimeMessage; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.util.List; @Service public class MailServiceImpl implements MailService { private static final Logger logger = LoggerFactory.getLogger(MailServiceImpl.class); @Resource @Qualifier("javaMailSender") private JavaMailSender mailSender; @Value("${spring.mail.username}") private String from; @Resource private FreeMarkerConfigurer freeMarkerConfigurer; /** * 发送简单邮件 */ @Override public void sendSimpleMail(Mail mail){ SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(mail.getTo()); message.setSubject(mail.getSubject()); message.setText(mail.getText()); message.setCc(mail.getCc()); mailSender.send(message); } /** * 发送附件 * * @throws Exception */ @Override public void sendAttachmentsMail(Mail mail,HttpServletRequest request){ try{ MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); helper.setFrom(from); helper.setTo(mail.getTo()); helper.setSubject(mail.getSubject()); helper.setText(mail.getText()); Listlist = UploadActionUtil.uploadFile(request); for (int i = 1,length = list.size();i
", true); FileSystemResource file = new FileSystemResource(new File("C:\\Users\\Administrator\\Desktop\\设计图\\已完成\\微信图片_20180323135358.png")); // addInline函数中资源名称chuchen需要与正文中cid:chuchen对应起来 helper.addInline("chuchen", file); mailSender.send(mimeMessage); }catch (Exception e){ logger.error("发送邮件发生异常"); } } /** * 发送模板邮件 * @param mail */ @Override public void sendTemplateMail(Mail mail){ MimeMessage message = null; try { message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(mail.getTo()); helper.setSubject(mail.getSubject()); //读取 html 模板 freemarker.template.Configuration cfg = getConfiguration(); Template template = cfg.getTemplate(mail.getTemplateName()+".ftl"); String html = FreeMarkerTemplateUtils.processTemplateIntoString(template, mail.getTemplateModel()); helper.setText(html, true); } catch (Exception e) { e.printStackTrace(); } mailSender.send(message); } private static freemarker.template.Configuration getConfiguration() throws IOException { freemarker.template.Configuration cfg = new freemarker.template.Configuration(freemarker.template.Configuration.VERSION_2_3_23); cfg.setDirectoryForTemplateLoading(new File(MailConstant.TEMPLATEPATH)); cfg.setDefaultEncoding("UTF-8"); cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER); return cfg; } }
六:创建ftl模板
这里我们创建一个注册的模板,其他模板大家可自行创建
在src/test/java/resources/template/mail目录下创建register.ftl
尊敬的${to}:欢迎您加入YUI,您的验证码为: ${identifyingCode}YUI科技
七:创建MailController
package com.example.demo.controller; import com.example.demo.core.constant.MailConstant; import com.example.demo.core.ret.RetResponse; import com.example.demo.core.ret.RetResult; import com.example.demo.core.utils.ApplicationUtils; import com.example.demo.model.Mail; import com.example.demo.service.MailService; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.Map; @RestController @RequestMapping("/mail") public class MailController { @Resource private MailService mailService; /** * 发送注册验证码 * @param mail * @return 验证码 * @throws Exception */ @PostMapping("/sendTemplateMail") public RetResultsendTemplateMail(Mail mail) throws Exception { String identifyingCode = ApplicationUtils.getNumStringRandom(6); mail.setSubject("欢迎注册初晨"); mail.setTemplateName(MailConstant.RETGISTEREMPLATE); Map map = new HashMap(); map.put("identifyingCode",identifyingCode); map.put("to",mail.getTo()[0]); mail.setTemplateModel(map); mailService.sendTemplateMail(mail); return RetResponse.makeOKRsp(identifyingCode); } @PostMapping("/sendAttachmentsMail") public RetResult sendAttachmentsMail(Mail mail,HttpServletRequest request) throws Exception { mail.setSubject("测试附件"); mailService.sendAttachmentsMail(mail, request); return RetResponse.makeOKRsp(); } }
八:测试
输入localhost:8080/mail/sendTemplateMail
必填参数 to
(十三)SpringBoot 发送E-mail
标签:ica 邮件内容 mod row work coding ttext red 17.
原文地址:https://www.cnblogs.com/yui66/p/9632993.html
文章标题:(十三)SpringBoot 发送E-mail
文章链接:http://soscw.com/index.php/essay/94227.html