163网站源码-SpringBoot集成短信服务

一、简介

SpringEmail的具体核心是MailSender套接字。 MailSender的实现可以向短信服务器发送电子邮件邮件服务器可以实现发送电子邮件的功能。

Spring附带了一个MailSender实现JavaMailSenderImpl,它使用JavaMailAPI来发送Email。 在Spring或SpringBoot应用程序发送Email之前,我们必须将JavaMailSenderImpl组装为Spring应用程序上下文的bean。

回到底部

二、配置

1.pom.xml

 org.springframework.boot
 spring-boot-starter-mail

2. 应用程序.yml

如果你想学习Java工程,高性能和分布式,简单易懂。 微服务、Spring、MyBatis、Netty源码分析的同学可以加我的Java中级交流:854630135。群里有阿里大牛的现场讲解技术,Java小互联网技术的视频免费分享给大家。

spring:
 mail:
 host: smtp.163.com
 port: 25
 username: 159****2662@163.com
 password: ***********

host属性默认为JavaMail会话的主机; port端口默认为标准SMTP端口25; 如果邮件服务器需要认证,还需要设置用户名和密码。

这里我使用的是163短信服务器,需要在163邮箱中启用客户端授权密码,否则会报550认证错误。

3.EmailConfig.java

在这里,我们将 JavaMailSenderImpl 组装为 Spring 应用程序上下文的 Bean。 同时需要注意的是163网站源码,这里使用了@ConfigurationProperties注解,要求属性有setter方法,并在启动类中使用@EnableConfigurationProperties注解才能生效。

@Configuration
@ConfigurationProperties(prefix = "spring.mail")
public class EmailConfig {
 private String host;
 private Integer port;
 private String username;
 private String password;
 @Bean
 public MailSender javaMailSender() {
 JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
 javaMailSender.setHost(host);
 javaMailSender.setPort(port);
 javaMailSender.setUsername(username);
 javaMailSender.setPassword(password);
 return javaMailSender;
 }
 public void setHost(String host) {
 this.host = host;
 }
 public void setPort(Integer port) {
 this.port = port;
 }
 public void setUsername(String username) {
 this.username = username;
 }
 public void setPassword(String password) {
 this.password = password;
 }
}

如果你想学习Java工程,高性能和分布式,简单易懂。 微服务、Spring、MyBatis、Netty源码分析的同学可以加我的Java中级交流:854630135。群里有阿里大牛的现场讲解技术,Java小互联网技术的视频免费分享给大家。

回到底部

3.发送

使用javaMailSender,发送短信是一件简单的事情。 我们只需要将javaMailSender的bean注入到自己的实现类中,然后使用JavaMailAPI来发送Email即可。

1. 短信发送

public void sendSimpleEmail() {
 // 构造Email消息
 SimpleMailMessage message = new SimpleMailMessage();
 message.setFrom("159****2662@163.com");
 message.setTo("****@qianxx.com");
 message.setSubject("邮件主题");
 message.setText("邮件内容");
 javaMailSender.send(message);
}

文本Email就是构造SimpleMailMessage实例,该对象可以非常方便地发送Email消息。

2. 附件短信发送

Spring 的电子邮件功能不仅限于纯文本电子邮件。 我们还可以添加附件。 如果要发送一封带有附件的电子邮件,关键方法是创建多部分类型的消息——电子邮件由多个部分组成,其中一个部分是电子邮件正文,其他部分是附件。 为了发送多部分类型的电子邮件,您需要创建一条 MIME(多用途互联网邮件扩展)消息。

public void mimeEmail() throws MessagingException {
 // MimeMessage 本身的 API 有些笨重,我们可以使用 MimeMessageHelper
 MimeMessage mimeMessage = javaMailSender.createMimeMessage();
 // 第二个参数是 true ,表明这个消息是 multipart类型的/
 MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
 mimeMessageHelper.setFrom("159****2662@163.com");
 mimeMessageHelper.setTo("****@qianxx.com");
 mimeMessageHelper.setSubject("附件邮件主题");
 mimeMessageHelper.setText("附件邮件内容");
 //添加附件,第一个参数表示添加到 Email 中附件的名称,第二个参数是图片资源
 mimeMessageHelper.addAttachment("boot.png", new ClassPathResource("public/images/boot.png"));
 javaMailSender.send(mimeMessage);
}

如果你想学习Java工程,高性能和分布式,简单易懂。 微服务、Spring、MyBatis、Netty源码分析的同学可以加我的Java中级交流:854630135。群里有阿里大牛的现场讲解技术,Java小互联网技术的视频免费分享给大家。

3.富文本消息发送

Spring的Email功能不仅可以添加附件,甚至可以使用HTML来美化邮件正文的内容。 发送富文本Email和发送简单文本Email没有太大区别,关键是将setText()方法的消息文本设置为HTML,并将第二个参数设置为true,表示这是HTML富文本。

public void htmlEmail() throws MessagingException {
 MimeMessage mimeMessage = javaMailSender.createMimeMessage();
 MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
 mimeMessageHelper.setFrom("159****2662@163.com");
 mimeMessageHelper.setTo("****@qianxx.com");
 mimeMessageHelper.setSubject("富文本邮件主题");
 String html = "

Hello,SpringBoot

"; mimeMessageHelper.setText(html, true); // 设置内嵌元素 cid,第一个参数表示内联图片的标识符,第二个参数标识资源引用 mimeMessageHelper.addInline("boot", new ClassPathResource("public/images/boot.png")); javaMailSender.send(mimeMessage); }

回到底部

四、使用Thymeleaf模板

HTML 标签的字符串连接是一件棘手的事情。 因为很难在头脑中解析 HTML 标签并想象它渲染后的样子。 而将 HTML 与 Java 代码混合会使这个问题变得更加复杂。

因此,Spring给出的解决方案是:使用模板生成HTML文本,并且有多种模板解决方案可供选择,包括ApacheVelocity和Thymeleaf。 这里我们只介绍Thymeleaf模板的用法(假设读者已经熟悉Thymeleaf模板并知道如何在SpringBoot中使用它们)。

1.Thymeleaf模板—email.html



 
 Email


Craig Walls says...

Hello Boot!

2. 邮件发送

@RunWith(SpringRunner.class)
@SpringBootTest
public class ThymeleafApplicationTests {
 @Autowired
 private JavaMailSender javaMailSender;
 @Autowired
 private SpringTemplateEngine templateEngine;
 @Test
 public void contextLoads() throws MessagingException {
 MimeMessage mimeMessage = javaMailSender.createMimeMessage();
 MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
 mimeMessageHelper.setFrom("159****2662@163.com");
 mimeMessageHelper.setTo("****@qianxx.com");
 mimeMessageHelper.setSubject("ThymeLeaf 模板邮件");
 // 利用 Thymeleaf 模板构建 html 文本
 Context ctx = new Context();
 ctx.setVariable("title", "Craig Walls");
 ctx.setVariable("content", "Hello Boot!");
 String emailText = templateEngine.process("email/email", ctx);
 mimeMessageHelper.setText(emailText, true);
 // 设置内嵌元素 cid,第一个参数表示内联图片的标识符,第二个参数标识资源引用
 mimeMessageHelper.addInline("boot", new ClassPathResource("/static/img/boot.png"));
 javaMailSender.send(mimeMessage);
 }
}

如果你想学习Java工程163网站源码,高性能和分布式,简单易懂。 微服务、Spring、MyBatis、Netty源码分析的同学可以加我的Java中级交流:854630135。群里有阿里大牛的现场讲解技术,Java小互联网技术的视频免费分享给大家。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 网站源码 163网站源码-SpringBoot集成短信服务 https://www.wkzy.net/game/177979.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务