spring boot 邮件发送

xiaoxiao2025-04-29  9

1、在pom.xml中添加maven依赖

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>

2、在application.properties文件中添加邮件相关配置

#邮件配置 spring.mail.host=邮件服务器地址 spring.mail.username=用户名 spring.mail.password=密码 spring.mail.default-encoding=UTF-8 #登录服务器是否需要认证 spring.mail.properties.mail.smtp.auth=true #SSL证书Socket工厂 spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory #使用SMTPS协议465端口 spring.mail.properties.mail.smtp.socketFactory.port=465 #显示在收件人邮箱里面的发件人名称 spring.mail.self.username=用户名

3、编写邮件发送代码:MailSendService.java

package com.ldy.bootv2.demo.service; import java.io.File; import java.util.List; import javax.mail.MessagingException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMessage.RecipientType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; /** * @类名: MailSender<br> * @描述: 邮件发送<br> */ @Service public class MailSendService { @Autowired JavaMailSender mailSender; //发件人名称设置 @Value("${spring.mail.self.username}") private String sendUser; public void sendEmail(String toMail, String title, String content) throws MessagingException { final MimeMessage mimeMessage = mailSender.createMimeMessage(); final MimeMessageHelper message = new MimeMessageHelper(mimeMessage); message.setFrom(sendUser); message.setTo(toMail); message.setSubject(title); message.setText(content); mailSender.send(mimeMessage); } /** * @方法名: sendSimpleMail<br> * @描述: 发送普通文本格式的邮件<br> * @param toMail 收件人,多个用英文格式逗号分隔 * @param replyTo 抄送人,多个用英文格式逗号分隔 * @param title 邮件主题 * @param content 邮件内容 * @param flies 附件 * @throws Exception */ public void sendSimpleMail(String toMail, String replyTo, String title, String content, List<File> files) throws Exception { final MimeMessage mimeMessage = mailSender.createMimeMessage(); final MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); helper.setFrom(sendUser); helper.setSubject(title); helper.setText(content); //设置多个收件人 String[] toAddress = toMail.split(","); helper.setTo(toAddress); //设置多个抄送 if(!StringUtils.isEmpty(replyTo)) { //helper.setReplyTo(replyTo); InternetAddress[] internetAddressCC = InternetAddress.parse(replyTo); mimeMessage.setReplyTo(internetAddressCC); } //添加附件 if(null != files) { for (File file : files) { helper.addAttachment(file.getName(), file); } } mailSender.send(mimeMessage); } /** * @方法名: sendHtmlMail<br> * @描述: 发送HTML格式的邮件<br> * @param toMail 收件人,多个用英文格式逗号分隔 * @param replyTo 抄送人,多个用英文格式逗号分隔 * @param title 邮件主题 * @param htmlContent 邮件内容 * @param files 附件 * @throws Exception */ public void sendHtmlMail(String toMail, String replyTo, String title, String htmlContent, List<File> files) throws Exception { final MimeMessage mimeMessage = mailSender.createMimeMessage(); final MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); helper.setFrom(sendUser); helper.setSubject(title); helper.setText(htmlContent, true); //设置多个收件人 String[] toAddress = toMail.split(","); helper.setTo(toAddress); //设置多个抄送 if(!StringUtils.isEmpty(replyTo)) { //helper.setReplyTo(replyTo); InternetAddress[] internetAddressCC = InternetAddress.parse(replyTo); mimeMessage.setRecipients(RecipientType.CC,internetAddressCC); } //添加附件 if(null != files) { for (File file : files) { helper.addAttachment(file.getName(), file); } } mailSender.send(mimeMessage); } }

完成上面的代码后,在发送邮件的java类里面注入MailSendService,直接调用对应的方法即可

转载请注明原文地址: https://www.6miu.com/read-5029376.html

最新回复(0)