Java系列-封装Email发送邮件工具类
2025年9月13日大约 1 分钟
Java系列-封装Email发送邮件工具类
准备工作
- 进入到QQ邮箱首页-> 设置-> 账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
- 点击生成授权码生成如下图所示复制蓝框内容备用

正式开始
POM
<!-- commons email -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.5</version>
</dependency>
配置基类
- EmailConfig.java
package com.starter.config.properties;
import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 邮件配置基类
* <p>Title: EmailConfiguration</p>
*
* @author cangbao
* @date 2019-10-07 1:52
* @package com.starter.config.properties
*/
@Configuration
public class EmailConfig {
// 发件服务器
private static final String EMAIL_HOSTNAME = "smtp.qq.com";
// SSL端口
private static final Integer EMAIL_PORT = 465;
// 账户
private static final String EMAIL_USERNAME = "862861159@qq.com";
// 生成的授权码
private static final String EMAIL_PASSWORD = "qhjoadlcbkqrbcjd";
@Bean
public static SimpleEmail initSimpleEmail() throws EmailException {
SimpleEmail email = new SimpleEmail();
email.setHostName(EMAIL_HOSTNAME);
email.setSmtpPort(EMAIL_PORT);
email.setAuthenticator(new DefaultAuthenticator(EMAIL_USERNAME, EMAIL_PASSWORD));
// 必须开启
email.setSSLOnConnect(true);
// 发送人账户
email.setFrom(EMAIL_USERNAME);
return email;
}
}
配置发送邮件工具类
- EmailSendUtils.java
package com.starter.config.utils;
import com.starter.config.properties.EmailConfig;
import org.apache.commons.mail.Email;
import org.apache.commons.mail.EmailException;
import org.springframework.context.annotation.Configuration;
/**
* 发送邮件工具类
* <p>Title: EmailSendUtils</p>
*
* @author cangbao
* @date 2019-10-07 1:21
* @package com.starter.config.utils
*/
public class EmailSendUtils {
/**
* 发送邮件
* @param subject
* @param msg
* @param to
* @throws EmailException
*/
public static void sendEmail(String subject, String msg, String... to) throws EmailException {
Email email = EmailConfig.initSimpleEmail();
email.setSubject(subject);
email.setMsg(msg);
email.addTo(to);
email.send();
}
}
测试结果
package com.starter.tests;
import com.starter.PageStarterApplication;
import com.starter.config.utils.EmailSendUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.mail.EmailException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/**
* 测试类
* <p>Title: Tests</p>
*
* @author cangbao
* @date 2019-10-05 3:53
* @package com.starter.tests
*/
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest(classes = PageStarterApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class Tests {
/**
* // 发送邮件
* @throws EmailException
*/
@Test
public void sendEmail() throws EmailException {
long time = System.currentTimeMillis();
log.info("开始发送");
EmailSendUtils.sendEmail("测试邮件", "这是一条测试邮件","yph0228@163.com");
log.info("发送耗时="+ (System.currentTimeMillis()-time)+ "ms");
}
}
