由于cs的csdN許多文章關于這方面的都是vip文章,而本文是免費的,希望廣大網友覺得有幫助的可以多點贊和關注!
QQ郵箱授權碼到這里去開啟
授權碼是16位的字母,填入下面的mail.setting里面的pass里面
# 郵件服務器的SMTP地址
host = smtp.qq.com
# 郵件服務器的SMTP端口
port = 465
# 發件人(必須正確,否則發送失敗)
from = xxx@qq.com
# 用戶名(注意:如果使用foxmail郵箱,此處user為qq號)
user = xxx
# 密碼(注意,某些郵箱需要為SMTP服務單獨設置密碼)
pass = 16位授權碼
# 使用 STARTTLS安全連接,STARTTLS是對純文本通信協議的擴展。
starttlsEnable = true# 使用SSL安全連接
sslEnable = true
# 指定實現javax.net.SocketFactory接口的類的名稱,這個類將被用于創建SMTP的套接字
socketFactoryClass = javax.net.ssl.SSLSocketFactory
# 如果設置為true,未能創建一個套接字使用指定的套接字工廠類將導致使用java.net.Socket創建的套接字類, 默認值為true
socketFactoryFallback = true
# 指定的端口連接到在使用指定的套接字工廠。如果沒有設置,將使用默認端口456
socketFactoryPort = 465# SMTP超時時長,單位毫秒,缺省值不超時
timeout = 0
# Socket連接超時值,單位毫秒,缺省值不超時
connectionTimeout = 0
我的Spring boot監聽類,里面MailUtil.send就是發送郵箱的關鍵代碼
import cn.hutool.extra.mail.MailUtil;
@Slf4j
@Component
public class MailEventListener {@Async(ThreadPoolConfig.EVENT_THREAD_POOL)@Retryable(value = Exception.class, maxAttempts = 3, backoff = @Backoff(delay = 1000L))@EventListener//監聽MailDTO事件//如果這里是LogDTO則監聽log類型的事件public void listen(BaseEvent<MailDTO> event) {// 發送郵件MailDTO mailDTO = event.getData();System.out.println("嘗試發送郵件");MailUtil.send(mailDTO.getMail(), mailDTO.getTitle(), mailDTO.getContent(), false);log.info(mailDTO.getMail() + " " + mailDTO.getTitle() + " " + mailDTO.getContent());}@Recoverpublic void recover(Exception e, BaseEvent<MailDTO> event) {// 記錄日志log.error("郵件發送失敗", e);}
}
@Data
@Builder
public class MailDTO {private String mail;private String title;private String content;
}