本文介紹下java實現(xiàn)郵件的發(fā)送,意在網(wǎng)站用戶評論時能夠及時通知站長和用戶評論被回復(fù)后能夠及時通知用戶。
下文介紹下具體實現(xiàn)。
java實現(xiàn)
首先引入springboot的郵箱依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置郵箱參數(shù),這里以qq郵箱作為示例
spring:
mail:
host: smtp.qq.com #qq郵箱
username: #用戶名,填qq郵箱地址。例如xxx@qq.com
password: #qq郵箱授權(quán)碼,網(wǎng)上搜索怎么獲得
此時就差不多了,接下來實現(xiàn)郵箱工具類
@Component
public class MailUtil {
@Value("${spring.mail.username}")
private String from; //這是發(fā)送人
@Autowired
JavaMailSender javaMailSender;
public ResponseDto sendMail(String to,String subject,String content){
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(from);
simpleMailMessage.setTo(to);
simpleMailMessage.setSubject(subject);
simpleMailMessage.setText(content);
javaMailSender.send(simpleMailMessage);
return ResponseDto.Ok();
}
}
此時調(diào)用MailUtil里的sendMail方法就能實現(xiàn)發(fā)送郵件了。
實踐中發(fā)現(xiàn)每次都需要等待郵件發(fā)送成功后接口才會返回,不符合我們的實際需求。故需在發(fā)送郵件時開辟一個新線程,即可滿足我們的需求。
為了減少大規(guī)模請求下創(chuàng)建線程的開銷,引入線程池來處理發(fā)送郵件事件。
線程池
使用**@Configuration注解保證初始化線程池只有一次,使用@Bean注解在程序啟動時就注入到IOC容器**內(nèi),這樣可以保證程序啟動后就會初始化線程池。
@Configuration
@Slf4j
public class ThreadPool {
private Integer maxPoolSize = Runtime.getRuntime().availableProcessors()*5;
private Integer corePoolSize = 5;
@Bean
public ExecutorService buildThreadPool() {
log.info("開始創(chuàng)建線程池");
ExecutorService pool = new ThreadPoolExecutor(corePoolSize, maxPoolSize, 60L, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(100));
return pool;
}
}
ThreadPoolExecutor感興趣的可以自己看,在此不過多介紹。
現(xiàn)在就可以使用線程來發(fā)送郵件了。
threadPool.buildThreadPool().submit(new Runnable() {
@Override
public void run() {
String to,subject = null;
if(comment.getParentId() == -1){
to = mail;
subject = "有人在你的博客評論了";
} else{
to = commentService.getById(comment.getParentId()).getUserEmail();
subject = "有人回復(fù)了你的評論";
}
mailUtil.sendMail(to,subject,"有人回復(fù)了你的評論,點擊鏈接跳轉(zhuǎn)到評論回復(fù)頁面,https://xiaoliu.life/p/"+comment.getBlogId());
}
});
最后實現(xiàn)效果:
文章來源:http://www.zghlxwxcb.cn/news/detail-595599.html
原文鏈接:https://xiaoliu.life/p/20230516a文章來源地址http://www.zghlxwxcb.cn/news/detail-595599.html
到了這里,關(guān)于java實現(xiàn)發(fā)送郵件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!