本文采用JavaMailSender+springboot邮件发送,具体操作内容看下面详细说明
- 首先搭建好springboot项目,引入pom文件
说明:若下面的包并非在新建demo引入的那么后续引入的时候注意选择版本,尽量不要选最新版,优先高引入量的版本,否则不兼容会提示包错误
<!--邮件发送-->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-mail -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
- 配置yml文件
说明:这里以qq为例,其他139邮箱、163邮箱设置对应的协议授权服务器端口等信息
spring:
mail:
username: xxxxxx@qq.com #授权邮箱用户
password: debnxxxxxxxxxxbf #授权码,需开启POP3/SMTP服务允许POP3/SMTP服务
host: smtp.qq.com #授权服务器
properties:
mail:
smtp:
ssl:
enable: true #开启SSL
public interface MailService {
void sendSimpleMail(String subject,String text,String receiver);
void sendAttachmentMail(String subject, String text, String receiver, Map<String, String> attachments);
}
- 新建MailServiceImpl类去实现MailService
@Service
public class MailServiceImpl implements MailService{
@Autowired
private JavaMailSenderImpl mailSender;
@Override
public void sendSimpleMail(String subject, String text, String receiver) {
SimpleMailMessage message = new SimpleMailMessage();
message.setSubject(subject);
message.setText(text);
message.setTo(receiver);
message.setFrom(Constants.MailQQsetFrom);
mailSender.send(message);
}
@Override
public void sendAttachmentMail(String subject, String text, String receiver, Map<String, String> attachments) {
MimeMessage mimeMessage = mailSender.createMimeMessage();
try{
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
mimeMessageHelper.setSubject(subject);
mimeMessageHelper.setText(text);
mimeMessageHelper.setTo(receiver);
mimeMessageHelper.setFrom(Constants.MailQQsetFrom);
attachments.forEach((k,v) -> {
try{
mimeMessageHelper.addAttachment(k,new File(v));
}catch (MessagingException e){
e.printStackTrace();
}
});
}catch (Exception e){
e.printStackTrace();
}
mailSender.send(mimeMessage);
}
}
@RestController
public class test {
@Autowired
MailService mailService;
@RequestMapping("testmail")
public void testmail() {
String title="邮件标题文字",content="",tomail="xxxxx@139.com";
content="尊敬的xxx您好:\n";
content+="次邮件内容为测试,详情如下:\n";
mailService.sendSimpleMail(title, content, tomail);
}
}