transport 对象是怎么初始化的?最好是静态初始化。

解决方案 »

  1.   

    参考这个:
    @Resource(name = "myMailServer")
        private Session mailSession;    static Transport transport ;    public boolean sendMail(String recipient, String subject, String text) {
        boolean exe = false;    Properties p = new Properties();    String username = "[email protected]";
        String password = "password";    InitialContext c = null;    try
        {
             c = new InitialContext();
              mailSession = (javax.mail.Session) c.lookup("java:comp/env/myMailServer");
        }
        catch(NamingException ne)
        {
            ne.printStackTrace();
        }    try
        {
            Message msg = new MimeMessage(mailSession);
            msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(recipient, false));
            msg.setSubject(subject);
            msg.setText(text);
            msg.setHeader("MIME-Version" , "1.0" );
            msg.setHeader("Content-Type" , "text/html" );
            msg.setHeader("X-Mailer", "Recommend-It Mailer V2.03c02");
            msg.saveChanges();        //Transport.send(msg);
            if(transport == null) {            transport = mailSession.getTransport("smtps");
            }
            if(!transport.isConnected()) {                transport.connect(username, password);
                }        transport.sendMessage(msg, msg.getAllRecipients());
            exe = true;
        }
        catch (AddressException e)
        {
            e.printStackTrace();
            exe = false;
        }
        catch (MessagingException e)
        {
            e.printStackTrace();
            exe = false;
        }
        finally {
            /*try {
                if(transport != null)
                    transport.close();
            }
            catch(MessagingException me) {
                me.printStackTrace();
            }
            catch(Exception e) {
                e.printStackTrace();
            }*/
        }    return exe;
    }
      

  2.   

    另外在信息传送过程中,你可以实现 TransportListener 接口,这样你就能跟踪到发生的事件了,对于你定位错误的存在有帮助。
      

  3.   

    我上次端口用465也这样,465是ssl的,用25就行了