【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:郵件發送時間限制,單位毫秒。有關發送郵件時內容上傳的時間長短。默認同樣是無限制。

 

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

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

Properties prop = new Properties();//這裏不用new,用回你那個就好

prop.put("mail.smtp.connectiontimeout", "25000");// 設置接收超時時間
prop.put("mail.smtp.timeout", "25000");// 設置讀取超時時間
prop.put("mail.smtp.writetimeout", "25000");// 設置寫入超時時間

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章