【Java】發送郵件和接收郵件配置超時時間


首先了解一下發郵件如果超時會怎樣,一直阻塞,如果你是用多線程組的話,那么不好意思那你會一直阻塞,解決辦法有嗎?有。

首先先知道一下javamail提供的關於超時的3個參數。

smtp

  • mail.smtp.connectiontimeout:連接時間限制,單位毫秒。是關於與郵件服務器建立連接的時間長短的。默認是無限制。
  • mail.smtp.timeout:郵件smtp時間限制,單位毫秒。這個是有關郵件讀取時間長短。默認是無限制。
  • mail.smtp.writetimeout:郵件發送時間限制,單位毫秒。有關發送郵件時內容上傳的時間長短。默認同樣是無限制。

如此類推,還有2種

imap

  • mail.imap.connectiontimeout:連接時間限制,單位毫秒。是關於與郵件服務器建立連接的時間長短的。默認是無限制。
  • mail.imap.timeout:郵件smtp時間限制,單位毫秒。這個是有關郵件讀取時間長短。默認是無限制。
  • mail.imap.writetimeout:郵件發送時間限制,單位毫秒。有關發送郵件時內容上傳的時間長短。默認同樣是無限制。

pop3

  • mail.pop3.connectiontimeout:連接時間限制,單位毫秒。是關於與郵件服務器建立連接的時間長短的。默認是無限制。
  • mail.pop3.timeout:郵件smtp時間限制,單位毫秒。這個是有關郵件讀取時間長短。默認是無限制。
  • mail.pop3.writetimeout:郵件發送時間限制,單位毫秒。有關發送郵件時內容上傳的時間長短。默認同樣是無限制。

 

看到沒,不設置默認無限制,那這樣萬一對面服務器出什么問題,那我們這邊如果有多個線程會一直阻塞

所以必須設置,配置很簡單,在發送前和接收前的配置加上時間就好,例如

  1.  
    Properties prop = new Properties();//這里不用new,用回你那個就好
  2.  
     
  3.  
    prop.put( "mail.smtp.connectiontimeout", "25000");// 設置接收超時時間
  4.  
    prop.put( "mail.smtp.timeout", "25000");// 設置讀取超時時間
  5.  
    prop.put( "mail.smtp.writetimeout", "25000");// 設置寫入超時時間

然后問題就解決了!其他類推

 

參考鏈接:https://blog.csdn.net/hj7jay/article/details/100574491


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM