最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于JavaMail實現(xiàn)郵件發(fā)送

 更新時間:2018年03月23日 09:13:37   作者:玩命丶DAN  
這篇文章主要為大家詳細介紹了基于JavaMail實現(xiàn)郵件發(fā)送功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下

通過javamail 實現(xiàn)發(fā)送郵件,供大家參考,具體內(nèi)容如下

注意:服務器有些端口是沒有開放的 需要去開放端口。 有些郵箱是需要開啟對應授權(quán)服務的。

1.maven依賴:

<!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api --> 
<dependency >  
  <groupId >javax.mail </groupId >  
  <artifactId >mail </artifactId >  
  <version >1.4.5 </version >  
</dependency >  
<dependency >  
  <groupId >com.sun.mail </groupId >  
  <artifactId >javax.mail </artifactId >  
  </dependency >  

2.新建個實體類 用來保存信息

import java.util.Properties; 
public class MailSenderInfo { 
   // 發(fā)送郵件的服務器的IP(或主機地址) 
   private String mailServerHost; 
   // 發(fā)送郵件的服務器的端口 
   private String mailServerPort; 
   // 發(fā)件人郵箱地址 
   private String fromAddress; 
   // 收件人郵箱地址 
   private String toAddress; 
   // 登陸郵件發(fā)送服務器的用戶名 
   private String userName; 
   // 登陸郵件發(fā)送服務器的密碼 
   private String password; 
   // 是否需要身份驗證 
   private boolean validate = true; 
   // 郵件主題 
   private String subject; 
   // 郵件的文本內(nèi)容 
   private String content; 
   // 郵件附件的文件名 
   private String[] attachFileNames; 
    
   public Properties getProperties() { 
   Properties p = new Properties(); 
   p.put("mail.smtp.host", this.mailServerHost); 
   p.put("mail.smtp.port", this.mailServerPort); 
   //設置是否安全驗證,默認為false,一般情況都設置為true 
   p.put("mail.smtp.auth", "true");  
   p.put("mail.smtp.starttls.enable","true");  
   p.put("mail.smtp.EnableSSL.enable","true"); 
   return p; 
   } 
   public String getMailServerHost() { 
   return mailServerHost; 
   } 
   public void setMailServerHost(String mailServerHost) { 
   this.mailServerHost = mailServerHost; 
   } 
   public String getMailServerPort() { 
   return mailServerPort; 
   } 
   public void setMailServerPort(String mailServerPort) { 
   this.mailServerPort = mailServerPort; 
   } 
   public boolean isValidate() { 
   return validate; 
   } 
   public void setValidate(boolean validate) { 
   this.validate = validate; 
   } 
   public String[] getAttachFileNames() { 
   return attachFileNames; 
   } 
   public void setAttachFileNames(String[] fileNames) { 
   this.attachFileNames = fileNames; 
   } 
   public String getFromAddress() { 
   return fromAddress; 
   } 
   public void setFromAddress(String fromAddress) { 
   this.fromAddress = fromAddress; 
   } 
   public String getPassword() { 
   return password; 
   } 
   public void setPassword(String password) { 
   this.password = password; 
   } 
   public String getToAddress() { 
   return toAddress; 
   } 
   public void setToAddress(String toAddress) { 
   this.toAddress = toAddress; 
   } 
   public String getUserName() { 
   return userName; 
   } 
   public void setUserName(String userName) { 
   this.userName = userName; 
   } 
   public String getSubject() { 
   return subject; 
   } 
   public void setSubject(String subject) { 
   this.subject = subject; 
   } 
   public String getContent() { 
   return content; 
   } 
   public void setContent(String textContent) { 
   this.content = textContent; 
   } 
} 

3.創(chuàng)建一個驗證器

import javax.mail.Authenticator; 
import javax.mail.PasswordAuthentication; 
 
/** 
 * 郵件用戶名和密碼認證器 
 */ 
public class MyAuthenticator extends Authenticator{ 
   String userName = null; 
   String password = null; 
   public MyAuthenticator() { 
   } 
   public MyAuthenticator(String username, String password) { 
   this.userName = username; 
   this.password = password; 
   } 
   protected PasswordAuthentication getPasswordAuthentication() { 
   return new PasswordAuthentication(userName, password); 
   } 
} 

4.在調(diào)用的地方給實體類賦值

private void email(HttpSession session, String email) { 
    // 設置郵件服務器信息 
    MailSenderInfo mailInfo = new MailSenderInfo(); 
    mailInfo.setMailServerHost("smtp-mail.outlook.com");// 發(fā)送郵件的服務器的IP(或主機地址) 
    mailInfo.setMailServerPort("587");//有些端口在服務器上是沒開放的 這里需要注意下 
    mailInfo.setValidate(true); 
    // 郵箱用戶名(根據(jù)自己情況設置) 這里可以多弄幾個郵箱過來 避免郵箱賬號需要驗證 或者被當成垃圾郵件封號 A失敗就用B 
    mailInfo.setUserName("此處填寫跟上面發(fā)送郵件服務器對應的郵箱"); 
    // 郵箱密碼(根據(jù)自己情況設置) 
    mailInfo.setPassword("這是你的密碼"); 
    // 發(fā)件人郵箱(根據(jù)自己情況設置,如果你沒對郵箱進行特別設置,應該和郵箱用戶名一致) 
    mailInfo.setFromAddress("這里跟上面一樣"); 
    // 收件人郵箱(根據(jù)自己情況設置) 
    mailInfo.setToAddress(email); 
    // 郵件標題 
    mailInfo.setSubject("我是標題"); 
    // 郵件內(nèi)容 
    mailInfo.setContent("我是內(nèi)容,正經(jīng)的內(nèi)容不是垃圾郵箱"); 
    // 發(fā)送郵件 
    SimpleMailSender sms = new SimpleMailSender(); 
    // 發(fā)送文體格式 
    sms.sendTextMail(mailInfo); 
  } 

5.這里才是真正的發(fā)送郵件

public class SimpleMailSender { 
  public boolean sendTextMail(MailSenderInfo mailInfo) { 
     // 判斷是否需要身份認證 
     MyAuthenticator authenticator = null; 
     Properties pro = mailInfo.getProperties(); 
     if (mailInfo.isValidate()) { 
      // 如果需要身份認證,則創(chuàng)建一個密碼驗證器 
      authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); 
     } 
     // 根據(jù)郵件會話屬性和密碼驗證器構(gòu)造一個發(fā)送郵件的session 
     Session sendMailSession = Session.getDefaultInstance(pro, authenticator); 
     try { 
      // 根據(jù)session創(chuàng)建一個郵件消息 
      Message mailMessage = new MimeMessage(sendMailSession); 
      // 創(chuàng)建郵件發(fā)送者地址 
      Address from = new InternetAddress(mailInfo.getFromAddress()); 
      // 設置郵件消息的發(fā)送者 
      mailMessage.setFrom(from); 
      // 創(chuàng)建郵件的接收者地址,并設置到郵件消息中 
      Address to = new InternetAddress(mailInfo.getToAddress()); 
      mailMessage.setRecipient(Message.RecipientType.TO, to); 
      // 設置郵件消息的主題 
      mailMessage.setSubject(mailInfo.getSubject()); 
      // 設置郵件消息發(fā)送的時間 
      mailMessage.setSentDate(new Date()); 
      // 設置郵件消息的主要內(nèi)容 
      String mailContent = mailInfo.getContent(); 
      mailMessage.setText(mailContent); 
      mailMessage.saveChanges(); 
      // 發(fā)送郵件 
      Transport.send(mailMessage); 
      return true; 
     } catch (MessagingException ex) { 
      ex.printStackTrace(); 
     } 
     return false; 
     } 
} 

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java多線程并發(fā)編程 Synchronized關(guān)鍵字

    Java多線程并發(fā)編程 Synchronized關(guān)鍵字

    現(xiàn)有一成員變量 Test,當線程 A 調(diào)用 Test 的 synchronized 方法,線程 A 獲得 Test 的同步鎖,同時,線程 B 也去調(diào)用 Test 的 synchronized 方法,此時線程 B 無法獲得 Test 的同步鎖,必須等待線程 A 釋放 Test 的同步鎖才能獲得從而執(zhí)行對應方法的代碼
    2017-05-05
  • springboot+mybatis攔截器方法實現(xiàn)水平分表操作

    springboot+mybatis攔截器方法實現(xiàn)水平分表操作

    這篇文章主要介紹了springboot+mybatis攔截器方法實現(xiàn)水平分表操作,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • 詳解Spring 兩種注入的方式(Set和構(gòu)造)實例

    詳解Spring 兩種注入的方式(Set和構(gòu)造)實例

    本篇文章主要介紹了Spring 兩種注入的方式(Set和構(gòu)造)實例,Spring框架主要提供了Set注入和構(gòu)造注入兩種依賴注入方式。有興趣的可以了解一下。
    2017-02-02
  • Java仿淘寶首頁分類列表功能的示例代碼

    Java仿淘寶首頁分類列表功能的示例代碼

    這篇文章主要介紹了仿淘寶分類管理功能的示例代碼,具有很好的參考價值,希望對大家有所幫助,也給大家做個參考
    2018-05-05
  • 詳解Java線程池如何統(tǒng)計線程空閑時間

    詳解Java線程池如何統(tǒng)計線程空閑時間

    這篇文章主要和大家分享一個面試題:Java線程池是怎么統(tǒng)計線程空閑時間?文中的示例代碼講解詳細,對我們掌握Java有一定幫助,需要的可以參考一下
    2022-11-11
  • Java日常練習題,每天進步一點點(22)

    Java日常練習題,每天進步一點點(22)

    下面小編就為大家?guī)硪黄狫ava基礎的幾道練習題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • MyBatis參數(shù)處理實現(xiàn)方法匯總

    MyBatis參數(shù)處理實現(xiàn)方法匯總

    這篇文章主要介紹了MyBatis參數(shù)處理實現(xiàn)方法匯總,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • JVM參數(shù)NativeMemoryTracking的使用

    JVM參數(shù)NativeMemoryTracking的使用

    本文主要介紹了JVM參數(shù)NativeMemoryTracking的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • 如果你想寫自己的Benchmark框架(推薦)

    如果你想寫自己的Benchmark框架(推薦)

    這篇文章主要介紹了如果你想寫自己的Benchmark框架,本文通過給大家分享八條軍規(guī),幫助大家理解,需要的朋友可以參考下
    2020-07-07
  • Java判斷文件或者文件夾是否存在的功能(不存在創(chuàng)建,存在刪除)

    Java判斷文件或者文件夾是否存在的功能(不存在創(chuàng)建,存在刪除)

    在Java中,要判斷文件或文件夾是否存在,并根據(jù)判斷結(jié)果來執(zhí)行創(chuàng)建或刪除操作,你可以使用java.io.File類或者java.nio.file包中的類,本文介紹Java判斷文件或者文件夾是否存在,不存在創(chuàng)建,存在刪除,感興趣的朋友一起看看吧
    2025-03-03

最新評論

宁远县| 招远市| 江孜县| 九台市| 灌云县| 甘孜| 家居| 吴江市| 垦利县| 张家界市| 扬中市| 彭州市| 镇平县| 普定县| 扶绥县| 临澧县| 开封县| 镇平县| 江山市| 潍坊市| 云龙县| 泗阳县| 同仁县| 铜山县| 中超| 德庆县| 海口市| 陵川县| 泌阳县| 恭城| 桓台县| 合江县| 出国| 长海县| 广饶县| 靖边县| 光泽县| 水富县| 山阳县| 紫阳县| 南木林县|