springboot集成Mail邮件,发送邮件

1、前言

      企业中,需要我们对一些数据进行监控,或者将数据导出发给指定的人。简单的通知采用的短信的形式,但是复杂的数据导出给其他人,就会采用邮件的方式。并且这样成本比较低。Spring框架本身提供了Mail的支持,当然目前流行的springboot框架对邮件的支持更加友好。下面以springboot集成Mail为例。

2、引入依赖

<!-- 邮件 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
    <scope>provided</scope>
</dependency>

3、yml配置

spring:
  # 邮件配置    
  mail:
    host: smtp.163.com
    port: 25
    username: wsapplyjob@163.com
    #邮箱的授权码
    password: 自己申请
    protocol: smtp          #可以不用设置,默认smtp
    default-encoding: UTF-8 #可以不用设置,默认UTF-8
    properties:
      mail:
        socketFactory:
          class: javax.net.ssl.SSLSocketFactory  #https协议认证需要配置
        smtp:
          #登录服务器是否需要认证
          auth: true
          # 是对纯文本通信协议的扩展。它提供一种方式将纯文本连接升级为加密连接(TLS或SSL),而不是另外使用一个端口作加密通信。
          starttls:
            enable: true
            required: true

其中protocol和default-encoding可以不配置,因为默认就是smtp和UTF-8,如图:

4、demo

public class ToolController{
	
	@Autowired
	JavaMailSenderImpl mailSender;

	public void test03() {
	    SimpleMailMessage message = new SimpleMailMessage();
            // 该参数需要设置的与yml中配置的yml一致,否则会报错
	    message.setFrom("wsapplyjob@163.com");
            // 发送到的人,可以直接指定数组,发送多人
	    message.setTo("wsapplyjob@163.com");
            // 邮件主题
	    message.setSubject("springboot集成Mail");
            // 邮件内容
	    message.setText("测试内容!");
            // 发送邮件
	    mailSender.send(message);
	    System.out.println("信息发送成功!");
	}
}

5、工具类

很多时候我们都是把发送邮件作为一个工具类,不需要注入任何Bean,可以做成以下配置:

@Test
public void test03() {
    JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
    mailSender.setHost("smtp.autostreets.com");
    mailSender.setProtocol("smtp");
    mailSender.setPort(25);
    mailSender.setUsername("wsapplyjob@163.com");
    mailSender.setPassword("****");
		
    Properties properties = new Properties();
    properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    properties.setProperty("mail.smtp.auth", "true");
    properties.setProperty("mail.smtp.starttls.enable", "true");
    properties.setProperty("mail.smtp.starttls.required", "true");
    mailSender.setJavaMailProperties(properties);
		
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom("wsapplyjob@163.com");
    //String[] toArray = {"123@163.com","456@163.com", "789@163.com","666@163.com"};
    //message.setTo(toArray);
    message.setTo("wsapplyjob@163.com");
    message.setSubject("Springboot集成Mail");
    message.setText("邮件内容测试");
    mailSender.send(message);
    System.out.println("信息发送成功!");
		
}

方法中有很多常量,封装是可以抽成常量。

6、附件或者模板发送

简单信息的发送是使用 SimpleMailMessage 为载体,附件则需要 MimeMessage 和 MimeMessageHelper这两个类来作为载体。

MimeMessageHelper 用于创建MIME消息的帮助类。它为HTML布局中的图像,典型邮件附件和文本内容提供支持。

发送html模板:

MimeMessage message =mailSender.createMimeMessage();
// 注意构造参数为一个值
MimeMessageHelper helper = new MimeMessageHelper(message);
helper.setFrom("wsapplyjob@163.com");
helper.setTo("wsapplyjob@163.com");
helper.setSubject("发送HTML");
// 第二个参数为支持html
helper.setText(html, true);
mailSender.send(message);
System.out.println("信息发送成功!");

源代码:

 发送附件:

MimeMessage message =mailSender.createMimeMessage();
// 第二个参数表示是否添加附件
MimeMessageHelper helper = new MimeMessageHelper(message,true);
helper.setFrom("wsapplyjob@163.com");
helper.setTo("wsapplyjob@163.com");
helper.setSubject("发送附件");
helper.setText("测试附件");
File file = new File("E:\\Sample Pictures\\美图1.jpg");
// 添加附件
helper.addAttachment("图片", file);
mailSender.send(message);
System.out.println("信息发送成功!");

参数说明:

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值