SpringBoot实现发送邮件
2023-12-22 21:30:11
仅供参考:实现逻辑自行修改
引入依赖
<!--springboot-邮箱依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
yml配置
--- # 企业邮箱配置
spring:
mail:
protocol: smtp
#邮件服务器地址
host: 邮件服务器地址
#端口号
port: 465
username: 你的QQ邮箱
sendFrom: 发件人【需要邮箱】
# 去邮箱中生成秘钥/授权码
password: 秘钥/授权码
#默认编码格式
default-encoding: UTF-8
properties:
mail:
#启动debug调试,生产环境关闭
debug: false
smtp:
socketFactory:
#SSL连接配置
class: javax.net.ssl.SSLSocketFactory
工具类
import cn.hutool.core.io.IoUtil;
import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.io.InputStreamSource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import javax.mail.internet.MimeMessage;
import java.util.List;
import java.util.Objects;
@Slf4j
public class MeetingEmailUtils {
private static final JavaMailSender mailSender;
private static final String sendFrom;
private static final String defaultSubject;
static {
mailSender = SpringUtil.getBean(JavaMailSender.class);
sendFrom = SpringUtil.getProperty("spring.mail.sendFrom");
defaultSubject = SpringUtil.getProperty("spring.mail.defaultSubject");
}
/**
* (支持批量并跳过错误邮箱)发送邮件(支持带附件)
*
* @param to 收件人
* @param ccTos 抄送人(复数)
* @param subject 邮件主题
* @param content 邮件内容
* @param fileArrays {"fileName":"文件名", "fileBytes":"文件字节数组"}
*/
public static void sendMail(String to, String subject, String content, List<JSONObject> fileArrays, String... ccTos) {
MimeMessage mimeMessage = mailSender.createMimeMessage();
if (StringUtils.isBlank(to)) {
throw new RuntimeException("邮箱收件人为空");
}
try {
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true);
//发件人
messageHelper.setFrom(sendFrom);
//收件人
messageHelper.setTo(to);
//抄送
if (Objects.nonNull(ccTos) && ccTos.length == 0) {
messageHelper.setCc(ccTos);
}
//主题
messageHelper.setSubject(StringUtils.isNotBlank(subject) ? subject : defaultSubject);
//邮件内容
if (StringUtils.isNotBlank(content)) {
messageHelper.setText(content);
}
//邮件附件
if (Objects.nonNull(fileArrays) && !fileArrays.isEmpty()) {
for (JSONObject json : fileArrays) {
InputStreamSource inputStreamSource = () -> IoUtil.toStream(json.getBytes("fileBytes"));
messageHelper.addAttachment(json.getString("fileName"), inputStreamSource);
}
}
mailSender.send(mimeMessage);
} catch (Exception e) {
log.error("发送给【{}】的邮件失败,原因是: {}", to, e.getMessage());
}
//日志信息
log.info("邮件批量发送完成");
}
}
文章来源:https://blog.csdn.net/qq_36763419/article/details/135160065
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!