如下是如何使用SpringBoot项目实现快捷发送邮件的详细步骤。
这里以163邮箱示例,需要开启POP3/SMTP/IMAP服务,因为你需要用到SMTP协议来实现实时发送邮件。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
spring:
mail:
host: smtp.163.com
username: *********@163.com
password: *********** #授权码
default-encoding: UTF-8
properties:
mail:
smtp:
auth: true
ssl:
enable: true
starttls:
enable: true
required: true
socketFactory:
port: 465
class: javax.net.ssl.SSLSocketFactory
port: 465
protocol: smtp
授权码需要自行对应的邮箱设置中获取,如下:
@Autowired
private JavaMailSender mailSender;
/**
* 发送普通邮件
* @author 二饭
* @email 1786705138@qq.com
*/
public void sendMail(SendMailDto sendMailDto) throws Exception {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(new InternetAddress(MimeUtility.encodeText("二饭的博客")+"<tworice_0811@163.com>").toString());
message.setTo(sendMailDto.getTo());
message.setSubject(sendMailDto.getSubject());
message.setText(sendMailDto.getContent());
try {
mailSender.send(message);
log.info("邮件已发送。");
} catch (Exception e) {
log.error("发送邮件时发生异常了!", e);
}
}
/**
* 发送HTML邮件
* @author 二饭
* @email 1786705138@qq.com
*/
public void sendHTMLMail(SendMailDto sendMailDto) throws Exception{
MimeMessage message=mailSender.createMimeMessage();
try {
//true表示需要创建一个multipart message
MimeMessageHelper helper=new MimeMessageHelper(message,true);
helper.setFrom(new InternetAddress(MimeUtility.encodeText("二饭的博客")+"<tworice_0811@163.com>"));
helper.setTo(sendMailDto.getTo());
helper.setSubject(sendMailDto.getSubject());
helper.setText(sendMailDto.getContent(),true);
mailSender.send(message);
log.info("发往-"+sendMailDto.getTo()+"-邮件已发送。");
}catch (Exception e) {
log.error("发往-"+sendMailDto.getTo()+"-邮件发送失败。");
}
}
发送HTML邮件时,邮件内容直接写HTML的标签内容就可以,就像写网页一样,最后会自动识别为HTML页面呈现在邮件中。
这个对象是我自定义的一个实体类对象,主要声明了邮件的收件人、邮件主题(标题)、邮件内容。该实体类如下:
@Data
public class SendMailDto implements Serializable {
/**
* 收件人
*/
private String to;
/**
* 主题
*/
private String subject;
/**
* 内容
*/
private String content;
}