1. 程式人生 > >Spring中使用 JavaMailSenderImpl來實現郵件的傳送

Spring中使用 JavaMailSenderImpl來實現郵件的傳送

前言:本專案使用Eclipse+maven外掛來構建

需要在pom.xml檔案中加入對應的依賴包的配置:
<!-- https://mvnrepository.com/artifact/com.sun.mail/javax.mail -->
<dependency>
   <groupId>com.sun.mail</groupId>
   <artifactId>javax.mail</artifactId>
   <version>1.6.1</version>
</dependency>
  <!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support -->
<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-context-support</artifactId>
   <version>4.3.14.RELEASE</version>
</dependency>

一、傳送郵件的步驟為
       (1).建立郵件傳送器(需要傳送人的郵件賬號、密碼、該賬戶的郵件伺服器地址->如網易為:smtp.163.com)
       (2).編輯郵件的具體內容(分類如下)
            ①.純text文字檔案
            ②.HTML格式的檔案
            ③.帶附件的郵件(圖片、媒體檔案、office檔案)
        (3).呼叫JavaMailSenderImpl類的物件裡面的send(郵件內容引數)方法來發送
            ①.郵件的內容引數支援的型別有:MimeMessages(簡單內容)、SimpleMailMessages(複雜內容)
二、程式碼實現
     (1).傳送郵件者的資訊封裝(這裡只封裝了必要的資訊、若有其他需要則自行新增)
    程式碼:
    //傳送者的資訊配置類
    public class Sender {
//郵箱的使用者名稱
public String username="你的使用者名稱";
//郵箱的登入密碼
public String password="你登入的密碼";
//郵箱提供商的伺服器地址
public String serverHost="smtp.163.com";
//埠號  預設為25
public int port=25;
//郵件使用的協議
public String protocol="http";
//省略set/get
        }
     (2).建立郵件傳送器
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();        
    Sender sender=new Sender();//使用預設的初始資訊
    mailSender.setHost(sender.getServerHost());  
    mailSender.setUsername(sender.getUsername());  
    mailSender.setPassword(sender.getPassword()); 
    mailSender.setProtocol(sender.getProtocol());
     2.1).傳送文字檔案的內容編寫
       SimpleMailMessage smm = new SimpleMailMessage();//使用者簡單郵件內容的資訊編寫    
      // 設定郵件引數 
     smm.setFrom(sender.getUsername());//傳送者的使用者名稱
     smm.setTo("
[email protected]
");//接收者的郵箱地址
     smm.setSubject("郵件標題");//郵件的標題 
     smm.setText("郵件的內容資訊"); //郵件的內容
     mailSender.send(smm);//傳送郵件
     2.2)傳送HTML格式以及待附件的內容編寫
     //1、建立檔案傳送器
     //設定郵件傳送器  包括髮送人 密碼   伺服器地址 
    JavaMailSenderImpl mailSender = new JavaMailSenderImpl();  
    /* 省略的程式碼與前面一致*/
    //2、檔案內容編寫
    //使用JavaMail的MimeMessage,支援更加複雜的郵件格式和內容  
    MimeMessage msg = mailSender.createMimeMessage();  
    //建立MimeMessageHelper物件,處理MimeMessage的輔助類  
    // msg:傳送的郵件資訊,true:是否為HTML格式的檔案,utf-8:設定編碼格式(因為傳送html格式時、內容可能出現亂碼)
    MimeMessageHelper helper = new MimeMessageHelper(msg, true,"utf-8");  
    //使用輔助類MimeMessage設定引數  
    helper.setFrom(mender.getUsername());  
    helper.setTo("
[email protected]
");  
    helper.setSubject("測試HTML格式的郵件傳送");  
    helper.setText("<body><h1>Hello HTML格式的郵件內容</h1><body>"
+ "HTML格式的內容區",true);  //true引數說明該內容格式為HTML
    //載入檔案資源,作為附件  
    ClassPathResource file = new ClassPathResource("秦時明月.jpg");  
    //加入附件  
    helper.addAttachment("秦時明月.jpg", file);  //鍵值對
    // 傳送郵件  
   mailSender.send(msg);