Spring Boot邮件发送(powernode CD2207)(内含教训视频+源代码)
教学视频+源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87452056
 
目录
- Spring Boot邮件发送(powernode CD2207)(内含教训视频+源代码)
- `教学视频+源代码下载链接地址:`[https://download.csdn.net/download/weixin_46411355/87452056](https://download.csdn.net/download/weixin_46411355/87452056)
- 一、注册并登录163邮箱
- 二、概述
- 三、案例实操
- 3.1 创建一个springboot项目
- 3.2 application.yml配置文件
- 3.3 发送普通内容的邮件
- 3.4 发送复杂内容的邮件
 
 
一、注册并登录163邮箱
注册163邮箱
 登录163邮箱

 点击继续开启
 
 手机微信扫描二维码发送短信

 
 点击开启
 
 
 手机微信扫描二维码发送短信
 
 点击“确定”
 
 
我们使用java程序发送邮件,属于使用第三方客户端发送邮件
 使用第三方客户端发送右键也需要先通过认证(登录):
 官方客户端认证: 用户名 密码
 第三方客户端的认证:用户名 授权码
 授权码需要通过发送短信开通指定功能时获取
二、概述
SpringBoot实现邮件功能是非常的方便快捷的,因为SpringBoot默认有starter实现了Mail。
 发送邮件应该是网站的必备功能之一,什么注册验证,忘记密码或者是给用户发送营销信息。
 最早期的时候我们会使用JavaMail相关api来写发送邮件的相关代码,后来spring推出了JavaMailSender更加简化了邮件发送的过程,在之后springboot对此进行了封装就有了现在的spring-boot-starter-mail。
三、案例实操
3.1 创建一个springboot项目


 这里“输入输出”勾选“Java Mail Sender”
 
3.2 application.yml配置文件
spring:
  # 设置连接邮箱的相关信息
  mail:
    host: smtp.163.com
    username: fbihackerharryhao@163.com
    password: IFLOJXMWEFJTXBYI # 使用授权码
3.3 发送普通内容的邮件
测试类
package com.bjpowernode.springbootmailsending;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
@SpringBootTest
class SpringbootMailsendingApplicationTests {
    //注入发送邮件的工具对象
    @Autowired
    private JavaMailSender javaMailSender;
    /**
     * 发送普通内容的邮件
     */
    @Test
    void contextLoads() {
        //1.创建邮件对象
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        //2.设置邮件的相关信息
        simpleMailMessage.setFrom("fbihackerharryhao@163.com");//设置邮件的发出方
        simpleMailMessage.setTo("3541434135@qq.com");//设置邮件的接收方
        simpleMailMessage.setSubject("这是一封测试邮件");//设置邮件的标题
        simpleMailMessage.setText("这是邮件的内容");//设置邮件的内容
        //3.使用工具将邮件对象发出
        javaMailSender.send(simpleMailMessage);
    }
}

 
3.4 发送复杂内容的邮件

测试类
  /**
     * 发送复杂内容的邮件
     */
    @Test
    public void test2() throws MessagingException {
        //1.创建邮件对象
        MimeMessage mimeMailMessage = javaMailSender.createMimeMessage();
        //2.创建邮件的工具来设置邮件的相关属性
        /*
        源码:
        public MimeMessageHelper(MimeMessage mimeMessage, boolean multipart, @Nullable String encoding)
			throws MessagingException {
		    this(mimeMessage, (multipart ? MULTIPART_MODE_MIXED_RELATED : MULTIPART_MODE_NO), encoding);
	    }
	    参数分析new MimeMessageHelper(mimeMailMessage, true, "utf-8");
	    第一个参数MimeMessage mimeMessage是邮件对象MimeMessage
	    第二个参数boolean multipart是文件是否有多个部分(文本内容、图片等)
	    第三个参数@Nullable String encoding是编码格式,指定了不能为空,必须要设置它。
        */
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true, "utf-8");
        //3.使用该工具 设置发送的邮件的相关属性
        mimeMessageHelper.setFrom("fbihackerharryhao@163.com");
        mimeMessageHelper.setTo("3541434135@qq.com");
        mimeMessageHelper.setSubject("这是一封测试用户的复杂文件");
        mimeMessageHelper.setText("<h1>这是复杂邮件的文本内容</h1>");
        /*
        源码
        public void addInline(String contentId, File file) throws MessagingException {
		Assert.notNull(file, "File must not be null");
		FileDataSource dataSource = new FileDataSource(file);
		dataSource.setFileTypeMap(getFileTypeMap());
		addInline(contentId, dataSource);
	}
        */
        //在邮件内容中嵌入指定的图片
        mimeMessageHelper.addInline("picture",new File("D:\\operation\\hacker.jpg"));
        //为邮件添加附件
        /* 源码:
        public void addAttachment(String attachmentFilename, File file) throws MessagingException {
        第一个参数 String attachmentFilename附件的名称
        第二个参数 File file 附件具体的文件
        */
        mimeMessageHelper.addAttachment("附件.txt",new File("D:\\operation\\attachment.txt"));
        //4.将邮件发出
        javaMailSender.send(mimeMailMessage);
    }

 



















