1,准备
①,首先发送邮箱要开启特定服务,这里以qq邮箱为例
②,开启
③,获取密码
点击生成授权码,然后发送短信到指定的地方,便能获取密码
2,配置
①,pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
②,application.properties 配置
spring.mail.host=smtp.qq.com
[email protected]
#这里填写你收到的那个密码
spring.mail.password=xxx
#必须开启,否则会报503错误
spring.mail.properties.mail.smtp.ssl.enable=true
3,查看MailSenderAutoConfiguration
它为我们配置了一个JavaMailSenderImpl,而我们也就是通过这个bean进行收发邮件
@Bean
public JavaMailSenderImpl mailSender() {
JavaMailSenderImpl sender = new JavaMailSenderImpl();
if (this.session != null) {
sender.setSession(this.session);
}
else {
applyProperties(sender);
}
return sender;
}
4,测试代码编写
①,由于发送邮件一般不要求实时,所以建议开启异步
@EnableAsync//开启异步
@SpringBootApplication
public class TaskApplication {
public static void main(String[] args) {
SpringApplication.run(TaskApplication.class, args);
}
}
②,发送邮件的代码编写
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
@Service
public class MailService {
@Autowired
private JavaMailSender javaMailSender;
/*发送简单邮件*/
@Async
public String send() {
SimpleMailMessage message=new SimpleMailMessage();
message.setSubject("告白");
message.setText("见什么世面,见见你就好了");
message.setTo("[email protected]");
message.setFrom("[email protected]");
javaMailSender.send(message);
return "邮件发送成功。。。。";
}
/*发送带html文本以及带上附件*/
@Async
public String sendHtml() {
MimeMessage message=javaMailSender.createMimeMessage();
try {
MimeMessageHelper helper=new MimeMessageHelper(message,true);//支持文件上传
helper.setSubject("告白");
helper.setText("<font color='red'>想你,老戴里都是你</font>",true);
helper.setTo("[email protected]");
helper.setFrom("[email protected]");
helper.addAttachment("dm.jpg",new File("D:\\dev\\IdeaProjects\\springboot\\task\\src\\main\\resources\\dm.jpg"));
javaMailSender.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
return "邮件发送成功。。。。";
}
}
③,controller层代码如下
import com.ts.task.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MailController {
@Autowired
private MailService mailService;
@RequestMapping("send")
public String send() {
mailService.send();
return "邮件发送成功。。。。";
}
/*发送html文本以及带上附件*/
@RequestMapping("sendHtml")
public String sendHtml() {
mailService.sendHtml();
return "邮件发送成功。。。。";
}
}
5,测试
①,发送简单邮件
②,发送带附件,html文本的邮件
6,结果
①,
②,
③,