您的位置 首页 java

记一次Spring Boot使用JavaMailSender发送邮件

1、要使用JavaMailSender发送邮件,首先需要在 pom .xml文件中引入spring-boot-starter-mail依赖:

spring-boot-starter-mail依赖

2、引入依赖包后需要在application.properties文件中配置属性:

属性配置

password为客户端授权码,而不是我们平常登录邮箱的密码,我这里使用的是163邮箱作为发送方(客户端授权码需要进入邮箱里面设置获取,这里就不介绍了)。

3、引入依赖包,写好配置文件后,接下来就是写业务代码了,代码很简单,想要深究原理就得去阅读源码了,这里只介绍如何实现,废话不多说,业务代码如下:(截图无法显示,只能贴代码了)

@Service

public class MailService {

private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired

private JavaMailSender sender;

//发送者

@Value(“${spring.mail.username}”)

private String from;

/**

* 发送纯文本的简单邮件

* @param sendTo 接收者

* @param Subject 邮件主题

* @param mailContent 邮件内容

* @return

*/

public String sendSimpleMail(String sendTo, String Subject , String mailContent){

//建立邮件消息

SimpleMail message message = new SimpleMailMessage();

message.setFrom(from);

message.setTo(sendTo);

message.setSubject(Subject);

message.setText(mailContent);

try {

sender.send(message);

logger.info(“”);

} catch (Exception e) {

logger.error(“发送简单邮件时发生异常!”, e);

}

return “”;

}

/**

* 发送 HTML 格式邮件

* @param sendTo

* @param Subject

* @param mailContent

*/

public void sendHtmlMail(String sendTo, String Subject, String mailContent){

MimeMessage message = sender.createMimeMessage();

try {

//true表示需要创建一个multipart message

MimeMessageHelper helper = new MimeMessageHelper(message, true);

helper.setFrom(from);

helper.setTo(sendTo);

helper.setSubject(Subject);

//HTML格式邮件需先进行Base64加密,取数据时再解码

helper.setText(mailContent, true);

sender.send(message);

logger.info(“HTML邮件已经发送。”);

} catch (MessagingException e) {

logger.error(“发送HTML邮件时发生异常!”, e);

}

}

/**

* 带附件的邮件

* @param sendTo

* @param Subject

* @param mailContent

* @param filePath

*/

public void sendAttachmentsMail(String sendTo, String Subject, String mailContent, String filePath){

MimeMessage message = sender.createMimeMessage();

try {

//true表示需要创建一个multipart message

MimeMessageHelper helper = new MimeMessageHelper(message, true);

helper.setFrom(from);

helper.setTo(sendTo);

helper.setSubject(Subject);

helper.setText(mailContent, true);

FileSystemResource file = new FileSystemResource(new File(filePath));

String fileName = filePath.substring(filePath.lastIndexOf(File.separator));

helper.addAttachment(fileName, file);

sender.send(message);

logger.info(“带附件的邮件已经发送。”);

} catch (MessagingException e) {

logger.error(“发送带附件的邮件时发生异常!”, e);

}

}

/**

* 发送带图片(静态资源)的邮件

* @param sendTo

* @param Subject

* @param mailContent 邮件内容,需要包含一个静态资源的id

* @param rscPath 静态资源路径和文件名

* @param rscId 静态资源id

*/

public void sendInlineResourceMail(String sendTo, String Subject, String mailContent, String rscPath, String rscId){

MimeMessage message = sender.createMimeMessage();

try {

//true表示需要创建一个multipart message

MimeMessageHelper helper = new MimeMessageHelper(message, true);

helper.setFrom(from);

helper.setTo(sendTo);

helper.setSubject(Subject);

helper.setText(mailContent, true);

FileSystemResource res = new FileSystemResource(new File(rscPath));

helper.addInline(rscId, res);

sender.send(message);

logger.info(“带图片的邮件已经发送。”);

} catch (MessagingException e) {

logger.error(“发送带图片的邮件时发生异常!”, e);

}

}

}

4、写完业务代码就可以写测试代码进行测试了,我是写了个controller进行调用,用 Junit 也可以,方式不限,测试代码如下下

@RestController

@RequestMapping(“/mail”)

public class MailController {

@Autowired

private MailService mailService;

@RequestMapping(“/sendmail”)

public String sendMail(){

//接收者邮箱(随意什么邮箱)

String to = “123456@qq.com”;

return mailService.sendSimpleMail(to, “主题:测试发送邮件功能”, “测试发送邮件功能”);

}

}

到了这里,在浏览器地址栏输入127.0.0.1:8080/mail/sendmail并回车,邮件便可以发送成功了。

文章来源:智云一二三科技

文章标题:记一次Spring Boot使用JavaMailSender发送邮件

文章地址:https://www.zhihuclub.com/181711.shtml

关于作者: 智云科技

热门文章

网站地图