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) { /* ... */ } /* ... */ 在我的工作中,我将会话设置为null,令我惊讶的是,课程仍然很好.如果我将null传递给MimeMessage构造函数并不重要.它不会抛出异常或任何东西.此外,Transport.send()方法包括以下行: 240 Session s =(msg.session!= null)? msg.session: 因此,如果会话为null,则只使用系统属性创建一个新会话.那么创建一个Session对象的目的是什么呢?为什么MimeMessage没有默认构造函数,如果你传递的内容无关紧要? 我查看了许多使用javax.mail的例子,例如:example from Google和 解决方法
会话是您与邮件主机进行交互的上下文.这包括但不限于调试来自邮件主机的输出,超时和身份验证机制.如果要以不同方式与同一邮件主机进行交互,则会话是保存此信息的对象. 如果单个JVM需要连接到多个邮件服务器,则需要两个不同的会话.这在JavaMail FAQ中有详细解释:
大多数JavaMail示例都未通过common mistakes测试.尝试引用JavaMail API sample programs Session.getDefaultInstance很少是任何代码的正确选择.大多数代码都应该使用Session.getInstance.包含MimeMessage的默认构造函数只会鼓励错误的行为. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |