1. 程式人生 > >基於JavaMail的郵件傳送

基於JavaMail的郵件傳送

通過javamail 實現傳送郵件。

注意:伺服器有些埠是沒有開放的 需要去開放埠。 有些郵箱是需要開啟對應授權服務的

1.maven依賴:

  1. <!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api -->  
  2. <dependency >    
  3.     <groupId >javax.mail </groupId >    
  4.     <artifactId >mail </artifactId >    
  5.     <version >1.4.5 </version >    
  6. </dependency >    
  7. <dependency >    
  8.     <groupId >com.sun.mail </groupId >    
  9.     <artifactId >javax.mail </artifactId >    
  10.     </dependency >   
2.新建個實體類 用來儲存資訊
  1. import java.util.Properties;  
  2. publicclass MailSenderInfo {  
  3.      // 傳送郵件的伺服器的IP(或主機地址)
  4.      private String mailServerHost;  
  5.      // 傳送郵件的伺服器的埠
  6.      private String mailServerPort;  
  7.      // 發件人郵箱地址
  8.      private String fromAddress;  
  9.      // 收件人郵箱地址
  10.      private String toAddress;  
  11.      // 登陸郵件傳送伺服器的使用者名稱
  12.      private String userName;  
  13.      // 登陸郵件傳送伺服器的密碼
  14.      private String password;  
  15.      // 是否需要身份驗證
  16.      privateboolean validate = true;  
  17.      // 郵件主題
  18.      private String subject;  
  19.      // 郵件的文字內容
  20.      private String content;  
  21.      // 郵件附件的檔名
  22.      private String[] attachFileNames;  
  23.      public Properties getProperties() {  
  24.       Properties p = new Properties();  
  25.       p.put("mail.smtp.host"this.mailServerHost);  
  26.       p.put("mail.smtp.port"this.mailServerPort);  
  27.       //設定是否安全驗證,預設為false,一般情況都設定為true
  28.       p.put("mail.smtp.auth""true");    
  29.       p.put("mail.smtp.starttls.enable","true");   
  30.       p.put("mail.smtp.EnableSSL.enable","true");  
  31.       return p;  
  32.      }  
  33.      public String getMailServerHost() {  
  34.       return mailServerHost;  
  35.      }  
  36.      publicvoid setMailServerHost(String mailServerHost) {  
  37.       this.mailServerHost = mailServerHost;  
  38.      }  
  39.      public String getMailServerPort() {  
  40.       return mailServerPort;  
  41.      }  
  42.      publicvoid setMailServerPort(String mailServerPort) {  
  43.       this.mailServerPort = mailServerPort;  
  44.      }  
  45.      publicboolean isValidate() {  
  46.       return validate;  
  47.      }  
  48.      publicvoid setValidate(boolean validate) {  
  49.       this.validate = validate;  
  50.      }  
  51.      public String[] getAttachFileNames() {  
  52.       return attachFileNames;  
  53.      }  
  54.      publicvoid setAttachFileNames(String[] fileNames) {  
  55.       this.attachFileNames = fileNames;  
  56.      }  
  57.      public String getFromAddress() {  
  58.       return fromAddress;  
  59.      }  
  60.      publicvoid setFromAddress(String fromAddress) {  
  61.       this.fromAddress = fromAddress;  
  62.      }  
  63.      public String getPassword() {  
  64.       return password;  
  65.      }  
  66.      publicvoid setPassword(String password) {  
  67.       this.password = password;  
  68.      }  
  69.      public String getToAddress() {  
  70.       return toAddress;  
  71.      }  
  72.      publicvoid setToAddress(String toAddress) {  
  73.       this.toAddress = toAddress;  
  74.      }  
  75.      public String getUserName() {  
  76.       return userName;  
  77.      }  
  78.      publicvoid setUserName(String userName) {  
  79.       this.userName = userName;  
  80.      }  
  81.      public String getSubject() {  
  82.       return subject;  
  83.      }  
  84.      publicvoid setSubject(String subject) {  
  85.       this.subject = subject;  
  86.      }  
  87.      public String getContent() {  
  88.       return content;  
  89.      }  
  90.      publicvoid setContent(String textContent) {  
  91.       this.content = textContent;  
  92.      }  
  93. }  

3.建立一個驗證器

  1. import javax.mail.Authenticator;  
  2. import javax.mail.PasswordAuthentication;  
  3. /** 
  4.  * 郵件使用者名稱和密碼認證器 
  5.  */
  6. publicclass MyAuthenticator extends Authenticator{  
  7.      String userName = null;  
  8.      String password = null;  
  9.      public MyAuthenticator() {  
  10.      }  
  11.      public MyAuthenticator(String username, String password) {  
  12.       this.userName = username;  
  13.       this.password = password;  
  14.      }  
  15.      protected PasswordAuthentication getPasswordAuthentication() {  
  16.       returnnew PasswordAuthentication(userName, password);  
  17.      }  
  18. }  
4.在呼叫的地方給實體類賦值 
  1. privatevoid email(HttpSession session, String email) {  
  2.         // 設定郵件伺服器資訊
  3.         MailSenderInfo mailInfo = new MailSenderInfo();  
  4.         mailInfo.setMailServerHost("smtp-mail.outlook.com");// 傳送郵件的伺服器的IP(或主機地址)
  5.         mailInfo.setMailServerPort("587");//有些埠在伺服器上是沒開放的 這裡需要注意下
  6.         mailInfo.setValidate(true);  
  7.         // 郵箱使用者名稱(根據自己情況設定) 這裡可以多弄幾個郵箱過來 避免郵箱賬號需要驗證 或者被當成垃圾郵件封號 A失敗就用B
  8.         mailInfo.setUserName("此處填寫跟上面傳送郵件伺服器對應的郵箱");  
  9.         // 郵箱密碼(根據自己情況設定)
  10.         mailInfo.setPassword("這是你的密碼");  
  11.         // 發件人郵箱(根據自己情況設定,如果你沒對郵箱進行特別設定,應該和郵箱使用者名稱一致)
  12.         mailInfo.setFromAddress("這裡跟上面一樣");  
  13.         // 收件人郵箱(根據自己情況設定)
  14.         mailInfo.setToAddress(email);  
  15.         // 郵件標題
  16.         mailInfo.setSubject("我是標題");  
  17.         // 郵件內容
  18.         mailInfo.setContent("我是內容,正經的內容不是垃圾郵箱");  
  19.