Spring Boot 發送郵件 源碼(實例)

最近公司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依賴註解

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章