最近公司Spring boot項目需要弄個郵箱提醒 然後在網上找了一些資料
方法1:使用 spring boot 依賴註解 JavaMailSender
這是本人實例 Demo 源碼git地址
https://gitee.com/leichen_super/SendEmailDemo.git
主要的2部分:
yml文件配置
# 設置郵箱主機
spring.mail.host=smtp.qq.com
# 設置用戶名
[email protected]
# 設置密碼,該處的密碼是QQ郵箱開啓SMTP的授權碼而非QQ密碼
spring.mail.password=pwvtabrwxogxidac
# 設置是否需要認證,如果爲true,那麼用戶名和密碼就必須的,
# 如果設置false,可以不設置用戶名和密碼,當然也得看你的對接的平臺是否支持無密碼進行訪問的。
spring.mail.properties.mail.smtp.auth=true
# STARTTLS[1] 是對純文本通信協議的擴展。它提供一種方式將純文本連接升級爲加密連接(TLS或SSL),而不是另外使用一個端口作加密通信。
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
pom.xml 導入mail依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>${spring-boot-mail.version}</version>
</dependency>
方法2 :( 不需要在yml 文件配置 只需要加入依賴註解就可以 )
不廢話直接貼源碼 本人用是qq服務端
String subject, String text, String toUse 三個參數 因爲這發送郵件我在很多地方都用到 所以定義3個入參分別是 郵件主題,郵件內容,收件人(這裏收件人代碼標紅處我做了處理 可以傳多個收件人 用 , 隔開即可)
import java.security.Security;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.springframework.stereotype.Service;
import com.sun.net.ssl.internal.ssl.Provider;
import com.wft.mgt.biz.MailBiz;import lombok.extern.log4j.Log4j2;
@Log4j2
@Service
public class MailBizImpl implements MailBiz {
private static MimeMessage message;@Override
public void sendEmail(String subject, String text, String toUser) throws MessagingException {
Security.addProvider(new Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
//QQ郵箱服務器
String smtpHost="smtp.qq.com";
//郵箱用戶名,即QQ賬號
final String username = "[email protected]";
//郵箱授權碼
final String password = "xxxxx";
//自己的郵箱
String from = "[email protected]";
Transport transport;
InternetAddress[] address=null;
try {
List list = new ArrayList();
String []median=toUser.split(",");
for(int i=0;i<median.length;i++){
list.add(new InternetAddress(median[i]));
address =(InternetAddress[])list.toArray(new InternetAddress[list.size()]);
}
} catch (AddressException e) {
e.printStackTrace();
}
Properties props = new Properties();
props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.port", "465");
props.setProperty("mail.smtp.auth", "true");
props.put("mail.smtp.host",smtpHost);
props.put("mail.smtp.username", username);
props.put("mail.smtp.password", password);
Session session = Session.getInstance(props, new Authenticator() {
//身份認證
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.setRecipients(Message.RecipientType.TO,address);
message.setSubject(subject);//郵箱主題
message.setSentDate(new Date());
message.setText(text);//郵箱內容
transport = session.getTransport("smtp");
transport.connect(smtpHost, username, password);
try {
transport.send(message);
log.info("email has been success" );
} catch (Exception e) {
log.info("email has been error" );
}
}
}
最後記得pom.xml文件導入mial依賴註解