使用JavaMail API,看看下面这片文章
http://www-900.ibm.com/developerWorks/cn/java/ccidnet/jmail/index1.shtml

解决方案 »

  1.   

    public class Email_Autherticator extends Authenticator
      {//此段代码用来进行服务器对用户的认证
           public Email_Autherticator()
             {
                super();
             }
           public PasswordAuthentication getPasswordAuthentication()
             {
                 return new PasswordAuthentication(username,password);
             }
      }  void jButton2_actionPerformed(ActionEvent e) {
        try
         {//该程序为接收邮件
           Properties props = System.getProperties(); //获取系统变量
           Authenticator auth = new Email_Autherticator();  
           props.put("mail.smtp.host",host);
           props.put("mail.smtp.auth","true");
           Session session = Session.getDefaultInstance(props,auth); //建立session
           Store store = session.getStore("pop3");
           store.connect(host,username,password);    //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);
         }
      }  void jButton4_actionPerformed(ActionEvent e) {
        try
         {//该程序为回复邮件
           Properties props = System.getProperties(); //获取系统变量
           Authenticator auth = new Email_Autherticator();  //取得穃uFFFD衿魅现?
           props.put("mail.smtp.host",host);
           props.put("mail.smtp.auth","true");
           Session session = Session.getDefaultInstance(props,auth); //建立session
           Store store = session.getStore("pop3");
           store.connect(host,username,password);       Folder folder = store.getFolder("INBOX");
           folder.open(Folder.READ_WRITE);
           Message message[] = folder.getMessages();       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(out_from_address);            Message forward = new MimeMessage(session);
                forward.setSubject("Fwd:"+message[i].getSubject());
                forward.setFrom(new InternetAddress(mail_to));
                forward.addRecipient(Message.RecipientType.TO,new InternetAddress(out_from_address));            BodyPart messageBodyPart = new MimeBodyPart();
                messageBodyPart.setText("Here you go with the original message:\n\n");            Multipart multipart = new MimeMultipart();
                multipart.addBodyPart(messageBodyPart);            messageBodyPart = new MimeBodyPart();
                messageBodyPart.setDataHandler(message[i].getDataHandler());            multipart.addBodyPart(messageBodyPart);
                forward.setContent(multipart);            Transport.send(forward);
                message[i].setFlag(Flags.Flag.DELETED,true);//DELETED,ANSWERED,DRAFT,FLAGGED,RECENT,SEEN,USER
             }
           folder.close(true);
           store.close();//关闭
         }
        catch(Exception ej2)
         {
            System.out.println(ej2);
         }  }
      

  2.   

    Authenticator 类
    能解说一下吗?
      

  3.   

    大致看了一下javadoc,但不清楚,请赐教
      

  4.   

    接收邮件的时候有时候是乱码,这是怎么回事那?比如,接收sina的邮件的时候,内容为乱码,而263邮件则能正常显示,请问这是怎么回事那?烦请指教。
      

  5.   

    乱吗问题就是java的老问题了,你自己做个方法处理一下就可以了,如果不会,就到基础类里面,在置顶的文章里,有我的一篇,说的很详细了。
      

  6.   

    wjmmml(笑着悲伤) :文章的地址是什么呀?
      

  7.   

    wjmmml(笑着悲伤) :文章的地址是什么呀?