1. 創建線程池
//創建線程池
@Bean
public ThreadPoolTaskExecutor createThreadPoolTaskExecutor() {
ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
threadPoolTaskExecutor.setCorePoolSize(5);
threadPoolTaskExecutor.setMaxPoolSize(10);
return threadPoolTaskExecutor;
}
2. 配置郵箱信息
spring:
mail:
host: smtp.qq.com
port: 587 #qq郵箱465、587
default-encoding: UTF-8 #qq郵箱
protocol: smtp
username: [email protected]
password: xxxxxxxxx
properties:
mail:
smtp:
auth: true
timeout: 25000
3. 編碼
@Component
public class EmailConfig {
/**
* 郵箱地址
*/
@Value("${spring.mail.username}")
private String from;
/**
* 密碼
*/
@Value("${spring.mail.password}")
public String password;
/**
* 協議
*/
@Value("${spring.mail.protocol}")
public String protocol;
/**
* 端口
*/
@Value("${spring.mail.port}")
public String port;
/**
* 服務器地址
*/
@Value("${spring.mail.host}")
public String host;
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getProtocol() {
return protocol;
}
public void setProtocol(String protocol) {
this.protocol = protocol;
}
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
}
###發送代碼###
@Autowired
EmailConfig emailConfig;
@Autowired
private JavaMailSender mailSender;
@Autowired
MailHistoryDao mailHistoryDao;
@Autowired
TaskExecutor taskExecutor;
public void sendMail (final String recipient, final String subject, final String content, final String processInstanceId) {
taskExecutor.execute(new Runnable() {
@Override
public void run() {
final boolean result = sendSimpleMail(recipient, subject, content);
final MailHistory mailHistory = new MailHistory();
mailHistory.setRecipient(recipient);
mailHistory.setSender(emailConfig.getFrom());
mailHistory.setSubject(subject);
mailHistory.setContent(content);
mailHistory.setCreateTime(new Date());
mailHistory.setProcessInstanceId(processInstanceId);
mailHistory.setStatus(result);
mailHistoryDao.add(mailHistory);
}
});
}
/**
* @param recipient 收件人
* @param subject 主題
* @param content 內容
* @return
*/
public boolean sendSimpleMail(final String recipient, final String subject, final String content) {
try {
logger.info("郵件發送:收件人" + recipient + ", 主題:" + subject);
final SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(emailConfig.getFrom());
message.setTo(recipient);
message.setSubject(subject);
message.setText(content);
message.setSentDate(new Date());
mailSender.send(message);
logger.info("郵件發送成功");
return true;
} catch (final Exception e) {
logger.error("郵件發送失敗", e);
return false;
}
}