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的示例,例如:来自Google的示例和来自教程点的示例,它们都创建了一个看起来非常无用的对象。为什么有人会这样做?Session