可能是你的pop3服务器指定的不对

解决方案 »

  1.   

    jsp:
    <%@ page contentType="text/html; charset=ISO8859_1" %>
    <%@ page import="ejb.pop3Bean"%>
    <%pop3Bean pop = new pop3Bean();
    pop.setServer("pop3.163.com",110);
    pop.setUser("wjmmml");
    pop.setPass("******");
    pop.pop3accept();%>
    package ejb;import javax.mail.*;
    import java.util.*;
    import javax.mail.internet.*;
    import java.io.*;
    import javax.activation.*;
    public class pop3Bean {
      String m_host;   //SMTP服务器名称
      int  m_port;
      String m_user;
      String m_pass;
      String info;
      public pop3Bean() {
          m_host=null;
          m_port=110;
          m_user=null;
          m_pass=null;
          info="";
      }
      public String getInfo() {
              return info;
      }
      public void setInfo(String newSample) {
              info = newSample;
        }   //设定smtp服务器用户名(可选)
      public void setUser(String user){
                    m_user=user;
      }
      //设定smtp服务器口令(可选)
      public void setPass(String pass){
                    m_pass=pass;
            }        //设定pop3的地址和端口号(可选)
      public void setServer(String server,int port){
                    if(port>0) m_port=port;
                    m_host=server;
      }   //设定pop3服务器地址,端口号使用缺省值
     public void setServer(String server){
                    m_host=server;
      }
     public void pop3accept(){
        try {//该程序为接收邮件
           Properties props=System.getProperties(); //获取系统变量
           Authenticator auth = new MailRz();
           props.put("mail.smtp.host",m_host);
           props.put("mail.smtp.auth","true");
           System.out.println("执行到设置完server属性了;");
           Session session = Session.getDefaultInstance(props,auth); //建立session
           Store store = session.getStore("pop3");
           System.out.println("得到pop的store对象;");
           if (store.isConnected()){
              store.close();
           }else{
              store.connect(m_host,m_port,m_user,m_pass);
           }       System.out.println("得到pop的connect对象;");
        //After connecting to the Store,you can get a Folder,which must be opened before you can read messages from it:
           Folder folder = store.getFolder("INBOX");//连接到Store后,取得一个文件夹,一般默认的是INDEX
           folder.open(Folder.READ_WRITE);//READ_ONLY为打开方式
           Message message[] = folder.getMessages();//从文件夹获取邮件信息    //可以用两种方式去获得邮件信息,getContent()用来获得邮件的主体信息。而WriteTo()可以用来获得邮件的全部信息,包括头部信息
        //   System.out.println(((MimeMessage)message).getContent());
           for (int i=0,n=message.length;i<n;i++)
             {            String out_from_person = ((InternetAddress)message[i].getFrom()[0]).getPersonal();
                String out_from_address = ((InternetAddress)message[i].getFrom()[0]).getAddress();
                System.out.println("From:"+out_from_person+"\t");
                System.out.println("Address:"+out_from_address+"\t");            String out_subject = message[i].getSubject();
                System.out.println("Subject:"+out_subject+"\t");            //以下代码用来获得邮件的正文信息
                Part messagePart = message[i];
                Object out_content = messagePart.getContent();
                if (out_content instanceof Multipart)
                  {
                     messagePart = ((Multipart)out_content).getBodyPart(0);
                     System.out.println("[ Multipart Message ]");
                  }
                String out_content_type = messagePart.getContentType();
                System.out.println("CONTENT:"+out_content_type);            if (out_content_type.startsWith("text/plain") || out_content_type.startsWith("text/html"))
                  {
                      InputStream ipstm = messagePart.getInputStream();
                      BufferedReader bufreader = new BufferedReader(new InputStreamReader(ipstm));
                      String thisLine = bufreader.readLine();
                      while (thisLine != null)
                        {
                            System.out.println("thisLine: "+thisLine);
                            thisLine = bufreader.readLine();
                        }
                  }
                System.out.println("------------------------------------------------------------");
                message[i].setFlag(Flags.Flag.DELETED,true);//最后删除服务器端的邮件
             }
                  //DELETED,ANSWERED,DRAFT,FLAGGED,RECENT,SEEN,USER
           folder.close(true);//true的话,彻底删除已经标记为DELETE的邮件,如果为false的话,就不删除
           store.close();//关闭
         }
        catch(Exception ej2)
         {
            System.out.println(ej2);
         }
      }
      }
    但是调用时就是出错啊,提示异常javax.mail.NoSuchProviderException: No provider for pop3
      

  2.   

    直接用store.connect(mailhost, user, password);用默认看看
      

  3.   

    我用我自己写的代码试了试,也不行,可是对于在本局域网设置的一个mailserver是可以的,所以我怀疑是不是因为网络的原因
      

  4.   

    用的应用服务器是webshpere吧,他不支持pop3,只支持imap。