导入坐标
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
配置文件
host指的是
spring: mail: host: smtp.qq.com password: qkzgrtozzrwncbed username: 212184206@qq.com
host指的是你用哪种方式发送邮件
username指的是使用哪一个邮箱发送邮件
password指的是
发送简单邮件
接口
package com.itheima.service; public interface SendMailService { void sendMail(); }
实现类
使用的是JavaMailSender对象,然后使用他的.send方法,参数是message,message包括了一封邮箱的基本内容,包括邮箱发送者,邮箱接受者,邮箱主题,邮箱正文内容。
package com.itheima.service.impl; import com.itheima.service.SendMailService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Component; @Component public class SendMailServiceImpl2 implements SendMailService { @Autowired private JavaMailSender javaMailSender; // 发送人 private String from = "212184206@qq.com"; // 接收人 private String to = "2239263778@qq.com"; // 标题 private String subject = "测试邮箱"; // 正文 private String context = "测试邮箱正文内容"; @Override public void sendMail() { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(to); message.setSubject(subject); message.setText(context); javaMailSender.send(message); } }
测试类
这里要注意的是:虽然成员变量是接口,但是这个@Autowired注解,就会使得Spring容器中的实现类会自动装配到这个成员变量中,就相当于是左边是接口,右边是实现类。
package com.itheima; import com.itheima.service.SendMailService; import com.itheima.service.impl.SendMailServiceImpl; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class Springboot22MailApplicationTests { @Autowired private SendMailService sendMailService; @Test void contextLoads() { sendMailService.sendMail(); }
发送多部件邮件
- 在正文中添加html文件
- 在正文中添加压缩附件等。
还是使用JavaMailSender创建对象,然后使用这个对象的javaMailSender.createMimeMessage(); 方法创建message对象,之后就是使用MimeMessageHelper helper创建help对象,之后还是设置信息的四个内容,如果传的是html文件,就要在helper.setText(context,true); 中true,如果是发送附件,就要在helper对象中添加true。
package com.itheima.service.impl; import com.itheima.service.SendMailService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMailMessage; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Component; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import java.io.File; @Component public class SendMailServiceImpl implements SendMailService { @Autowired private JavaMailSender javaMailSender; // 发送人 private String from = "212184206@qq.com"; // 接收人 private String to = "2239263778@qq.com"; // 标题 private String subject = "测试邮箱"; // 正文 private String context = "<a href = 'https://www.baidu.com/'>点开有惊喜</a>"; @Override public void sendMail() { MimeMessage message = javaMailSender.createMimeMessage(); // 这行代码就是都有的 只不过换成了createMimeMeaasge try { // 这行代码就是发送多部件添加的 -- 后面的true就是开启多部件(压缩包) MimeMessageHelper helper = new MimeMessageHelper(message,true); helper.setFrom(from); helper.setTo(to); helper.setSubject(subject); helper.setText(context,true); // 这行代码的true就是使得邮件中可以使用html文件 // 添加附件 File f1 = new File("D:\\study\\SpringBoot2\\springboot_22_mail\\src\\main\\resources\\a.jpg"); helper.addAttachment(f1.getName(),f1); // 添加附件 } catch (MessagingException e) { e.printStackTrace(); } javaMailSender.send(message); } }