当前位置: 首页 > news >正文

高端网站开发建设服务商平台

高端网站开发建设,服务商平台,方维服务公司服务范围,论坛网站推广使用SpringBoot发送邮件 邮件发送其实是一个非常常见的需求#xff0c;用户注册#xff0c;找回密码等地方#xff0c;都会用到#xff0c;Spring Boot 中对于邮件发送#xff0c;提供了相关的自动化配置类#xff0c;使得邮件发送变得非常容易。 1、前置工作 目前国内…使用SpringBoot发送邮件 邮件发送其实是一个非常常见的需求用户注册找回密码等地方都会用到Spring Boot 中对于邮件发送提供了相关的自动化配置类使得邮件发送变得非常容易。 1、前置工作 目前国内大部分的邮件服务商都不允许直接使用用户名/密码的方式来在代码中发送邮件都是要先申请授权码这里以 QQ 邮箱为例向大家演示授权码的申请流程 首先我们需要先登录 QQ 邮箱网页版点击上方的设置按钮然后点击账户选项卡在账户选项卡中找到开启POP3/SMTP选项如下 点击开启开启相关功能开启过程需要手机号码验证按照步骤操作即可不赘述。开启成功之后即可获取一个授权码将该号码保存好一会使用。 2、引入依赖、配置邮箱基本信息 !--集成发送邮件的功能-- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-mail/artifactId /dependency然后在yml配置文件中进行配置 spring:mail:host: smtp.qq.com # 设置邮箱主机port: 587 # SMTP 服务器的端口username: yydsqq.com # 设置用户名password: yyds # 设置密码该处的密码是QQ邮箱开启SMTP的授权码而非QQ密码mail:from: ${spring.mail.username}to: yyds163.com做完这些之后Spring Boot 就会自动帮我们配置好邮件发送类相关的配置在 org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration 类中部分源码如下 Configuration ConditionalOnClass({ MimeMessage.class, MimeType.class, MailSender.class }) ConditionalOnMissingBean(MailSender.class) Conditional(MailSenderCondition.class) EnableConfigurationProperties(MailProperties.class) Import({ MailSenderJndiConfiguration.class, MailSenderPropertiesConfiguration.class }) public class MailSenderAutoConfiguration {}可以看到导入了另外一个配置 MailSenderPropertiesConfiguration 类这个类中提供了邮件发送相关的工具类源码如下 Configuration ConditionalOnProperty(prefix spring.mail, name host) class MailSenderPropertiesConfiguration {private final MailProperties properties;MailSenderPropertiesConfiguration(MailProperties properties) {this.properties properties;}BeanConditionalOnMissingBeanpublic JavaMailSenderImpl mailSender() {JavaMailSenderImpl sender new JavaMailSenderImpl();applyProperties(sender);return sender;} } 可以看到这里创建了一个 JavaMailSenderImpl 的实例 JavaMailSenderImpl 是 JavaMailSender 的一个实现我们将使用 JavaMailSenderImpl 来完成邮件的发送工作。 3、Service层代码 自定义的MailProperties配置类用于解析mail开头的配置属性 package com.yyds.domain;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;Data Component ConfigurationProperties(prefix mail) public class MailProperties {private String from;private String to;}service层 package com.yyds.service;import freemarker.template.TemplateException;import javax.mail.MessagingException; import java.io.IOException; import java.util.Map;public interface MailService {void sendSimpleMail(String subject, String text) ;void sendHtmlMail(String subject, String text, MapString, String attachmentMap) throws MessagingException;void sendTemplateMail(String subject, MapString, Object params) throws MessagingException, IOException, TemplateException; } package com.yyds.service.impl;import com.yyds.domain.MailProperties; import com.yyds.service.MailService; import freemarker.cache.ClassTemplateLoader; import freemarker.cache.TemplateLoader; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; import org.springframework.beans.factory.annotation.Autowired; 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.mail.MessagingException; import javax.mail.internet.MimeMessage; import java.io.File; import java.io.IOException; import java.util.Map;Service public class MailServiceImpl implements MailService {Autowiredprivate JavaMailSender javaMailSender;Autowiredprivate MailProperties myMailProperties;/*** 发送简单文本邮件*/Overridepublic void sendSimpleMail(String subject, String text) {SimpleMailMessage mailMessage new SimpleMailMessage();mailMessage.setFrom(myMailProperties.getFrom());mailMessage.setTo(myMailProperties.getTo());mailMessage.setSubject(subject);mailMessage.setText(text);javaMailSender.send(mailMessage);}/*** 发送带有链接和附件的复杂邮件*/Overridepublic void sendHtmlMail(String subject, String text, MapString, String attachmentMap) throws MessagingException {MimeMessage mimeMessage javaMailSender.createMimeMessage();//是否发送的邮件是富文本附件图片html等MimeMessageHelper messageHelper new MimeMessageHelper(mimeMessage, true);messageHelper.setFrom(myMailProperties.getFrom());messageHelper.setTo(myMailProperties.getTo());messageHelper.setSubject(subject);messageHelper.setText(text, true);//重点默认为false显示原始html代码无效果if(attachmentMap ! null){attachmentMap.entrySet().stream().forEach(entrySet - {try {File file new File(entrySet.getValue());if(file.exists()){messageHelper.addAttachment(entrySet.getKey(), new FileSystemResource(file));}} catch (MessagingException e) {e.printStackTrace();}});}javaMailSender.send(mimeMessage);}/*** 发送模版邮件*/Overridepublic void sendTemplateMail(String subject, MapString, Object params) throws MessagingException, IOException, TemplateException {MimeMessage mimeMessage javaMailSender.createMimeMessage();MimeMessageHelper helper new MimeMessageHelper(mimeMessage, true);helper.setFrom(myMailProperties.getFrom());helper.setTo(myMailProperties.getTo());freemarker.template.Configuration configuration new freemarker.template.Configuration(freemarker.template.Configuration.VERSION_2_3_19);TemplateLoader templateLoader new ClassTemplateLoader(this.getClass(), /templates/);configuration.setTemplateLoader(templateLoader);Template template configuration.getTemplate(mail.ftl);String html FreeMarkerTemplateUtils.processTemplateIntoString(template, params);helper.setSubject(subject);helper.setText(html, true);//重点默认为false显示原始html代码无效果javaMailSender.send(mimeMessage);} } 4、发送邮件 4.1 测试发送简单文本邮件 SpringBootTest(classes BootStartApplication.class) public class MimeMailTest {Autowiredprivate MailService mailService;Testpublic void sendMail() {mailService.sendSimpleMail(测试Springboot发送邮件, 发送邮件...);} }4.2 测试发送带有链接和附件的复杂邮件 package com.yyds;import com.yyds.service.MailService; import freemarker.template.TemplateException; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;import javax.mail.MessagingException; import java.io.IOException; import java.util.HashMap; import java.util.Map;SpringBootTest(classes BootStartApplication.class) public class MimeMailTest {Autowiredprivate MailService mailService;Testpublic void testMail() throws MessagingException {MapString, String attachmentMap new HashMap();attachmentMap.put(附件, D:\\D_ENL_MRO数据统计.xlsx);mailService.sendHtmlMail(测试Springboot发送带附件的邮件2, 欢迎进入a href\http://www.baidu.com\百度首页/a, attachmentMap);}}4.3 测试发送发送模版邮件 首先需要引入 Freemarker 依赖 !--整合freemarker--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-freemarker/artifactId/dependency然后在 resources/templates 目录下创建一个 mail.ftl 作为邮件发送模板 htmlbodyh3你好 span stylecolor: red;${username}/span, 这是一封模板邮件!/h3/body /htmlpackage com.yyds;import com.yyds.service.MailService; import freemarker.template.TemplateException; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;import javax.mail.MessagingException; import java.io.IOException; import java.util.HashMap; import java.util.Map;SpringBootTest(classes BootStartApplication.class) public class MimeMailTest {Autowiredprivate MailService mailService;Testpublic void testFreemarkerMail() throws MessagingException, IOException, TemplateException {MapString, Object params new HashMap();params.put(username, Tom);mailService.sendTemplateMail(测试Springboot发送模版邮件, params);}}
http://www.dnsts.com.cn/news/111656.html

相关文章:

  • 怎么在网站上做seowordpress优秀站点
  • 网站建设进度时间表怎么做监测网站的浏览量
  • 做网站要钱的吗青岛做网站建设的公司排名
  • 网站建设公司需要什么手机优化系统
  • 旅游电子商务网站有哪些庆阳市建设局网站
  • 深圳网站建设比较seo外包
  • 温州外贸网站制作青岛网站建设哪个平台好
  • 263网站建设qq手机版
  • app制作哪里正规纯ajax网站如何做seo
  • 网站访问者qqwordpress产品页面没有分类选择
  • 海南网站建设推广网站建设回访
  • wordpress连接已重置深圳seo优化排名推广
  • 学网站开发工作好找吗常州网站建设培训
  • 原则网站设计版式企业网站建设需要的资料
  • 做网站开发人员架构新网站建设风格
  • 简述网站的建设流程图下载官方网站
  • 做网站是什么专业wordpress站内短信
  • 网站建设王滨1983html旅游网站页面设计模板
  • 做网站是要收费的吗软件开发设计文档示例
  • 蚌埠网站优化网站开发商城
  • 化妆品销售网站开发与设计wordpress笔记主题
  • 新手建网站推荐哈尔滨网站制作招聘
  • 网站项目需要什么wordpress多主题
  • 河北承德建设工程信息网站英文谷歌seo
  • 免费网站制作器公司向要做一个网站要怎么做
  • 当当网书店网站建设案例专业深圳网站建设公司
  • 个人备案的网站做企业内容wordpress後台小程序
  • 2008如何添加iis做网站wordpress文章页打不开了
  • 揭阳企业免费建站wordpress的数据库在哪里
  • 网站怎么做流量wordpress检测手机端