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

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

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

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

注意:服務(wù)器有些端口是沒(méi)有開(kāi)放的 需要去開(kāi)放端口。 有些郵箱是需要開(kāi)啟對(duì)應(yīng)授權(quán)服務(wù)的。

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.新建個(gè)實(shí)體類 用來(lái)保存信息

import java.util.Properties; 
public class MailSenderInfo { 
   // 發(fā)送郵件的服務(wù)器的IP(或主機(jī)地址) 
   private String mailServerHost; 
   // 發(fā)送郵件的服務(wù)器的端口 
   private String mailServerPort; 
   // 發(fā)件人郵箱地址 
   private String fromAddress; 
   // 收件人郵箱地址 
   private String toAddress; 
   // 登陸郵件發(fā)送服務(wù)器的用戶名 
   private String userName; 
   // 登陸郵件發(fā)送服務(wù)器的密碼 
   private String password; 
   // 是否需要身份驗(yàn)證 
   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); 
   //設(shè)置是否安全驗(yàn)證,默認(rèn)為false,一般情況都設(shè)置為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)建一個(gè)驗(yàn)證器

import javax.mail.Authenticator; 
import javax.mail.PasswordAuthentication; 
 
/** 
 * 郵件用戶名和密碼認(rèn)證器 
 */ 
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)用的地方給實(shí)體類賦值

private void email(HttpSession session, String email) { 
    // 設(shè)置郵件服務(wù)器信息 
    MailSenderInfo mailInfo = new MailSenderInfo(); 
    mailInfo.setMailServerHost("smtp-mail.outlook.com");// 發(fā)送郵件的服務(wù)器的IP(或主機(jī)地址) 
    mailInfo.setMailServerPort("587");//有些端口在服務(wù)器上是沒(méi)開(kāi)放的 這里需要注意下 
    mailInfo.setValidate(true); 
    // 郵箱用戶名(根據(jù)自己情況設(shè)置) 這里可以多弄幾個(gè)郵箱過(guò)來(lái) 避免郵箱賬號(hào)需要驗(yàn)證 或者被當(dāng)成垃圾郵件封號(hào) A失敗就用B 
    mailInfo.setUserName("此處填寫跟上面發(fā)送郵件服務(wù)器對(duì)應(yīng)的郵箱"); 
    // 郵箱密碼(根據(jù)自己情況設(shè)置) 
    mailInfo.setPassword("這是你的密碼"); 
    // 發(fā)件人郵箱(根據(jù)自己情況設(shè)置,如果你沒(méi)對(duì)郵箱進(jìn)行特別設(shè)置,應(yīng)該和郵箱用戶名一致) 
    mailInfo.setFromAddress("這里跟上面一樣"); 
    // 收件人郵箱(根據(jù)自己情況設(shè)置) 
    mailInfo.setToAddress(email); 
    // 郵件標(biāo)題 
    mailInfo.setSubject("我是標(biāo)題"); 
    // 郵件內(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) { 
     // 判斷是否需要身份認(rèn)證 
     MyAuthenticator authenticator = null; 
     Properties pro = mailInfo.getProperties(); 
     if (mailInfo.isValidate()) { 
      // 如果需要身份認(rèn)證,則創(chuàng)建一個(gè)密碼驗(yàn)證器 
      authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); 
     } 
     // 根據(jù)郵件會(huì)話屬性和密碼驗(yàn)證器構(gòu)造一個(gè)發(fā)送郵件的session 
     Session sendMailSession = Session.getDefaultInstance(pro, authenticator); 
     try { 
      // 根據(jù)session創(chuàng)建一個(gè)郵件消息 
      Message mailMessage = new MimeMessage(sendMailSession); 
      // 創(chuàng)建郵件發(fā)送者地址 
      Address from = new InternetAddress(mailInfo.getFromAddress()); 
      // 設(shè)置郵件消息的發(fā)送者 
      mailMessage.setFrom(from); 
      // 創(chuàng)建郵件的接收者地址,并設(shè)置到郵件消息中 
      Address to = new InternetAddress(mailInfo.getToAddress()); 
      mailMessage.setRecipient(Message.RecipientType.TO, to); 
      // 設(shè)置郵件消息的主題 
      mailMessage.setSubject(mailInfo.getSubject()); 
      // 設(shè)置郵件消息發(fā)送的時(shí)間 
      mailMessage.setSentDate(new Date()); 
      // 設(shè)置郵件消息的主要內(nèi)容 
      String mailContent = mailInfo.getContent(); 
      mailMessage.setText(mailContent); 
      mailMessage.saveChanges(); 
      // 發(fā)送郵件 
      Transport.send(mailMessage); 
      return true; 
     } catch (MessagingException ex) { 
      ex.printStackTrace(); 
     } 
     return false; 
     } 
} 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(22)

    下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你
    2021-07-07
  • MyBatis參數(shù)處理實(shí)現(xiàn)方法匯總

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

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

    JVM參數(shù)NativeMemoryTracking的使用

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

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

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

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

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

最新評(píng)論

巴南区| 天长市| 左权县| 略阳县| 藁城市| 禄劝| 抚松县| 金山区| 柳河县| 辉南县| 五台县| 尼勒克县| 习水县| 德阳市| 烟台市| 梅河口市| 岱山县| 兰溪市| 雷州市| 涪陵区| 舞阳县| 徐汇区| 玛多县| 郁南县| 古丈县| 藁城市| 桓台县| 卓尼县| 监利县| 高清| 丹寨县| 霍山县| 龙里县| 外汇| 开江县| 平遥县| 罗源县| 镇远县| 西盟| 泰来县| 广宁县|