我正在修理負責發送電子郵件的課程。它看起來像這樣(簡化):javax.mail.Session有什麼用?
/* ... */
Properties props = System.getProperties();
props.put("mail.smtp.host", A_VALID_IP_OF_MAIL_SERVER);
Session session = Session.getDefaultInstance(props, null);
try {
Message msg = new MimeMessage(session);
/* msg.setFrom(); msg.addRecipient(); etc. */
Transport.send(msg);
System.out.println("Sent!");
}
catch (Exception e) { /* ... */ }
/* ... */
在我的工作,我設置session
到null
和我絕對驚喜的類仍然能正常工作。如果我通過null
到MimeMessage
的構造函數沒關係。它不會拋出異常或任何東西。此外,Transport.send()
方法包括下列行:
240 Session s = (msg.session != null) ? msg.session : 241 Session.getDefaultInstance(System.getProperties(), null);
所以如果會話是null
它只是創建使用系統屬性一個新的。那麼什麼是創建一個Session
對象的目的呢?爲什麼不MimeMessage
有一個默認的構造函數,如果它沒有關係你在那裏通過?
我觀察的數目的使用javax.mail的例子,如:example from Google和 example from tutorialspoint並且它們都創建一個對象Session
這似乎相當無用。爲什麼有人會那樣做?
這很好,直到你開始使用多線程應用程序的Javamail,那麼最終會咬你,因爲System.getProperties()是一個全局對象。 – Brain2000