我写的是一个发送邮件的程序,有时候会停在 try to connect to host ***.***.***.***
部分程序如下:
    public boolean send() {
        try {
            setMessage();
            Transport transport = mailSession.getTransport("smtp");
            transport.connect(mail.getSmtpHost(), mail.getSmtpUser(),
                              mail.getSmtpPasswd());    //我估计是程序走到这个地方的时候一直在连接smtp服务器,然后服务器也没有响应。然后程序就不往下走了,也不抛异常。            transport.sendMessage(message, message.getAllRecipients());
            transport.close();
        }
        catch (NoSuchProviderException ex) {
            System.out.println(ex.toString());
            return false;
        }
        catch (MessagingException ex) {
            System.out.println(ex.toString());
            return false;
        }
        return true;
    } 我的问题是能不能想个办法让判断一下当在这个地方停下的时候,让他从新连接一次smtp服务器。获取  conection to host
           

解决方案 »

  1.   

    请到我的博客看看吧,希望对你有帮助。http://blog.csdn.net/liguangwen86
      

  2.   

    你看看我的例子
    import   java.util.*;   import javax.mail.Message;
    import javax.mail.Session;
    import javax.mail.Transport;
    import   javax.mail.internet.*;   
    import   java.io.*;   
      
    /**   
    *   @author   Bromon   
    */   
    public   class   SenderWithSMTPVer   
    {   
    String   host="";   
    String   user="";   
    String   password="";   
      
    public   void   setHost(String   host)   
    {   
      this.host=host;   
    }   
      
    public   void   setAccount(String   user,String   password)   
    {   
      this.user=user;   
      this.password=password;   
    }   
      
    public   void   send(String   from,String   to,String   subject,String   content)   
    {   
      Properties   props   =   System.getProperties();   
      props.put("mail.smtp.host",   host);//指定SMTP服务器   
      
      props.put("mail.smtp.auth",   "true");//指定是否需要SMTP验证   
      try   
      {   
        Session     mailSession   =   Session.getDefaultInstance(props,   null);   
      
      
        mailSession.setDebug(true);//是否在控制台显示debug信息   
      
        Message   message=new   MimeMessage(mailSession);   
        message.setFrom(new   InternetAddress(from));//发件人   
        message.addRecipient(Message.RecipientType.TO,new   InternetAddress(to));//收件人   
      
        
        message.setSubject(subject);//邮件主题   
        message.setText(content);//邮件内容   
        message.saveChanges();   
      
        Transport   transport   =   mailSession.getTransport("smtp");   
      
        transport.connect(host,   user,   password);   
        transport.sendMessage(message,   message.getAllRecipients());   
        transport.close();   
      }catch(Exception   e)   
      {   
        e.printStackTrace();   
      }   
      
    }   
      
      
      
    public   static   void   main(String   args[])   
    {   
      SenderWithSMTPVer   sm=new   SenderWithSMTPVer();   
      
      sm.setHost("smtp.sina.com");//指定要使用的邮件服务器   
      sm.setAccount("账号","密码");//指定帐号和密码   
      
      /*   
    *   @param   String   发件人的地址   
        *   @param   String   收件人地址   
        *   @param   String   邮件标题   
        *   @param   String   邮件正文   
      */   
      sm.send("发件人@sina.com","收件人@sina.com","标题","内容");   
    }   
    }   
      

  3.   

     sm.send("发件人@sina.com","收件人@sina.com","标题","内容");   
      

  4.   

    楼主debug,确认一下,是不是在这个位置,如果真的是这个位置的话,线程的问题。或者是服务器连接不到的问题吧。如果是偶尔的话,正常。如果每次都是这样,就是程序的问题。