SpringBoot使用JavaMailSender发送邮件

本文介绍如何在SpringBoot项目中快速集成邮件发送功能,包括添加依赖、配置参数、创建工具类及业务代码调用,实现简单邮件、带附件邮件及带静态资源邮件的发送。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Springboot的spring-boot-starter-mail为使用邮件发送功能提供了自动化配置,只需要简单几步就可以完成邮件发送功能。

1、在pom.xml文件中导入 mail 相关依赖

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

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

spring.mail.host=smtp.qq.com                    //邮箱SMTP服务器,这里写发送者邮箱使用的SMTP服务器
spring.mail.port = 25      //端口号,注意:很多云服务商禁用25端口,如需使用,需申请开放此端口
spring.mail.username = 1192655570@qq.com         //发送者的邮箱账号
spring.mail.password =  abcabcabc                //授权登录密码
spring.mail.default-encoding = utf-8    //编码
spring.mail.protocol = smtp      //邮件使用的协议,常用的除SMTP外还有POP3
spring.mail.properties.mail.debug = true   //是否启用调试模式(启用调试模式可打印客户端与服务器交互过程时一问一答的响应消息)
spring.mail.properties.mail.auth = true   // 是否需要验证用户名密码

monitor.tousers = user1@qq.com ,user2@qq.com      //邮件接收者邮箱,key和value都可以自定义,如有多个接收者邮箱,使用逗号分隔

一般免费的邮箱,如下列出的,他们的SMTP服务器就是在域名前加上smtp就行了.
smtp.qq.com
smtp.163.com
smtp.sina.com.cn
smtp.sohu.com
smtp.126.com

3、创建邮件发送工具类MailUtil

public class MailUtil {
    static Logger log = LoggerFactory.getLogger(MailUtil .class);

    public MailUtil () {
    }

    /**
     * 发送简单邮件
     * @param javaMailSender
     * @param from 发送者
     * @param users 接收者
     * @param subject 主题
     * @param content 内容
     */
    public static void sendSimpleMail(JavaMailSender javaMailSender, String from, String[] users, String subject, String content) {
        Runnable thread = () -> {
            try {
                log.info("邮件开始 - [发件人:" + from + "收件人:" + Arrays.toString(users) + ",标题:" + subject + ",内容:" + content + "]");
                SimpleMailMessage message = new SimpleMailMessage();
                message.setFrom(from);
                message.setTo(users);
                message.setSubject(subject);
                message.setText(content);
                javaMailSender.send(message);
                log.info("邮件结束");
            } catch (Exception e) {
                e.printStackTrace();
                log.error("发送邮件错误", e);
            }
        };
        thread.run();
    }

    /**
     * 发送包含附件的邮件
     * @param javaMailSender
     * @param from 发送者
     * @param users 接收者
     * @param subject 主题
     * @param content 内容
     */
    public static void sendMailWithAttachments(JavaMailSender javaMailSender, String from, String[] users, String subject, String content,File file) {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();

        MimeMessageHelper helper = null;
        try {
            helper = new MimeMessageHelper(mimeMessage, true);
            helper.setFrom(from);
            helper.setTo(users);
            helper.setSubject(subject);
            helper.setText(content);

            helper.addAttachment(file.getName(), file);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        javaMailSender.send(mimeMessage);
    }
}

4、业务代码使用邮件发送功能

@Service
public class MyService {

    @Autowired
    private JavaMailSender javaMailSender;

    @Value("spring.mail.username")
    private String from;
    @Value("monitor.tousers")
    private String tousers;

	//发送简单邮件
    public boolean testSendMail(String subject,String content) {
        String[] users = tousers.split(",");
        MailUtil.sendSimpleMail(javaMailSender,from,users,subject,content);
        return true;
    }

    //发送带附件的邮件
    public boolean testSendMailWithAttachments(String subject,String content) {
        String[] users = tousers.split(",");
        File file = new File("范冰冰.jpg");
        MailUtil.sendMailWithAttachments(javaMailSender,from,users,subject,content,file);
        return true;
    }

    //发送带静态资源(例如图片等)的邮件
    public boolean testSendMailWithStaticResources(String subject){
        String[] users = tousers.split(",");
        File file = new File("范冰冰.jpg");
        String content="<html><body>[外链图片转存失败(img-T6OE6dlw-1562061147052)(https://mp.youkuaiyun.com/%22cid:范冰冰/%22)]</body></html>";
        MailUtil.sendMailWithAttachments(javaMailSender,from,users,subject,content,file);
        return true;
    }
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值