?application.yml
spring:profiles:active: dev
# active: test#郵件附件上傳文件大小限制servlet:multipart:max-file-size: 50MB #單個文件大小限制max-request-size: 100MB #總文件大小限制(允許存儲文件的文件夾大小)mail:default-encoding: UTF-8host: smtp.qq.comusername: xxxxxxx@qq.compassword: xxxxxxxxx#郵箱設置第三方登錄授權碼test-connection: falseproperties:mail.smtp.auth: true
?郵箱設置第三方登錄授權碼獲取
?郵箱設置第三方登錄授權碼獲取https://blog.csdn.net/xnian_/article/details/134515274?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22134515274%22%2C%22source%22%3A%22xnian_%22%7D
package com.cloud.xxx.utils;import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.security.Security;
import java.util.Date;
import java.util.Properties;import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;@Slf4j
@Service
public class MailServiceUtil {@Resourceprivate JavaMailSender javaMailSender;/*** 發件人的郵箱地址<br>* 即我們配置的郵件服務的郵箱*/@Value("${spring.mail.username}")private String serverMail;@Value("${spring.mail.password}")private String password;@Value("${spring.mail.host}")private String host;/*** 發送郵件** @param toUser 收件人郵件地址* @param subject 標題* @param text 正文*/public boolean sendMail(String toUser, String subject, String text) {try {MimeMessage message = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom(serverMail);helper.setTo(toUser.split(","));helper.setSubject(subject);helper.setText(text, true);javaMailSender.send(message);log.info("發送郵件to:{},主題:{},內容:{}", toUser, subject, text);} catch (Exception e) {log.error("sendMail ", e);return Boolean.FALSE;}return Boolean.TRUE;}/*** 使用加密的方式,利用 587 端口進行傳輸郵件,開啟ssl* @param to 收件人郵箱* @param message 郵件正文* @param title 郵件標題*/public boolean sendMail587(String to, String title, String message) {try {Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";//設置郵件會話參數Properties props = new Properties();//郵箱的發送服務器地址props.setProperty("mail.smtp.host", host);props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);props.setProperty("mail.smtp.socketFactory.fallback", "false");//郵箱發送服務器端口,這里設置為 587 端口props.setProperty("mail.smtp.port", "587");props.setProperty("mail.smtp.socketFactory.port", "587");props.put("mail.smtp.auth", "true");//獲取到郵箱會話,利用匿名內部類的方式,將發送者郵箱用戶名和密碼授權給jvmSession session = Session.getDefaultInstance(props, new Authenticator() {protected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(serverMail, password);}});//通過會話,得到一個郵件,用于發送Message msg = new MimeMessage(session);//設置發件人msg.setFrom(new InternetAddress(serverMail));//設置收件人,to為收件人,cc為抄送,bcc為密送msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));
// msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(to, false));
// msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(to, false));// 設置郵件標題msg.setSubject(title);//設置發送的日期msg.setSentDate(new Date());/*//設置郵件消息msg.setText(message);*/// 設置郵件的內容體msg.setContent(message, "text/html;charset=UTF-8");//調用Transport的send方法去發送郵件Transport.send(msg);} catch (Exception e) {log.error("sendMail ", e);return Boolean.FALSE;}return Boolean.TRUE;}
}