<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 0, comments - 77, trackbacks - 0, articles - 356
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    用java收郵件- -

    Posted on 2007-05-12 11:09 semovy 閱讀(1215) 評論(0)  編輯  收藏 所屬分類: JAVA應用

    用java收郵件- -

                                          

    收郵件沒問題了,缺點就是郵件太多的話,會等好長時間才出來,應用線程方式來收,否則看著象死機了,:),以后再說了

    package com.IEthing.util;

    import java.io.*;
    import java.text.*;
    import java.util.*;

    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.activation.*;
    import javax.mail.MessagingException;
    import javax.mail.Session;
    import javax.mail.internet.MimeMessage;

    import javax.mail.MessagingException;
    import javax.mail.Session;
    import javax.mail.internet.MimeMessage;


    /**
     * @author David update by tegger
     *
     * TODO To change the template for this generated type comment go to Window -
     * Preferences - Java - Code Style - Code Templates
     */
    public class Pop3Bean {

      private int mailCounter; //郵件計數

      private int mailIndex; //郵件編號,即郵件在messages數組中的位置

      private int mailDownErrorCounter; //正在下載郵件時,出錯的計數器

      private boolean[] recordFailure; //記錄下載出錯的郵件的序號

      private int totalRetryTimes; //總共重試次數

      private int retryTimeCounter; //記下重試的次數

      private boolean otherError; //若是在郵件正式下載之前出錯,則置該值為true

      private String extension=".eml"; //文件擴展名

      private Store store;

      private Folder folder;

      private Message[] messages;

      private Message message;

      private Part part;

      private String emlName;

      private String attachName;

      private int allMessageCount;

      private int messageCount;

      private String dateformat; //默認的日前顯示格式

      //  private String propFile = MailConstants.PROPS_FILE_NAME;//用這個接口類的好處是更改配置文件路徑的時候不需要更改每個類

      private String protocol="pop3"; //服務協議

      private String mailHost; //服務器地址

      private String userName; //用戶名

      private String password; //密碼

      private String saveAttachPath; //附件下載后的存放目錄

      private String saveEmlPath="E:\\test\\"; //保存eml文件的路徑

      public Pop3Bean() throws IOException
      {
        /*   FileProperties fp = new FileProperties(propFile);
           fp.load();
           protocol = fp.getProperty(MailConstants.RECV_PROTO);
           mailHost = fp.getProperty(MailConstants.RECV_HOST);
           userName = fp.getProperty(MailConstants.RECV_USER);
           password = fp.getProperty(MailConstants.RECV_PASS);
           saveAttachPath = fp.getProperty(MailConstants.RECV_ATTACH);
           saveEmlPath = fp.getProperty(MailConstants.RECV_ROOT);
           dateformat = fp.getProperty("mail.receive.dtfmat");
           extension = fp.getProperty("mail.receive.extension");
           totalRetryTimes = Integer
                   .parseInt(fp.getProperty("mail.receive.retry"));*/
      }

      /**
       * 設置郵件主機
       */
      public void setMailHost(String mailHost)
      {
        this.mailHost = mailHost;
      }

      /**
       * 獲取郵件主機
       */
      public String getMailHost()
      {
        return this.mailHost;
      }

      /**
       * 設置郵件帳號
       */
      public void setUserName(String userName)
      {
        this.userName = userName;
      }

      /**
       * 獲取郵件帳號
       */
      public String getUserName()
      {
        return this.userName;
      }

      /**
       * 設置郵件密碼
       */
      public void setPassword(String password)
      {
        this.password = password;
      }

      /**
       * 設置Store
       */
      public void setStore(Store store)
      {
        this.store = store;
      }

      /**
       * 設置郵箱文件夾
       */
      public void setFolder(Folder folder)
      {
        this.folder = folder;
      }

      /**
       * 設置messages數組
       */
      public void setMessages(Message[] messages)
      {
        this.messages = messages;
      }

      /**
       * 設置message
       */
      public void setMessage(Message message)
      {
        this.message = message;
      }
     public void setCurMessage(int i)
     {
       this.message = this.messages[i];
     }
      /**
       * 獲取message
       */
      public Message getMessage()
      {
        return this.message;
      }

      /**
       * 獲取folder中的message數量
       *
       * @throws MessagingException
       */
      public int getAllMessageCount() throws MessagingException
      {
        this.allMessageCount = folder.getMessageCount();
        return allMessageCount;
      }

      /**
       * 設置allMessageCount
       *
       * @throws MessagingException
       */
      private void setAllMessageCount() throws MessagingException
      {
        this.allMessageCount = this.folder.getMessageCount();
      }

      /**
       * 獲取messages中message的數量
       *
       * @return
       */
      public int getMessageCount()
      {
        this.messageCount = this.messages.length;
        return messageCount;
      }

      /**
       * 獲得folder中新郵件的數量
       *
       * @return
       * @throws MessagingException
       */
      public int getNewMessageCount() throws MessagingException
      {
        return this.folder.getNewMessageCount();
      }

      /**
       * 獲得folder中未讀郵件的數量
       *
       * @return
       * @throws MessagingException
       */
      public int getUnreadMessageCount() throws MessagingException
      {
        return this.folder.getUnreadMessageCount();
      }

      /**
       * 獲取Part
       */
      public Part getPart()
      {
        return (Part) message;
      }

      /**
       * 設置Part
       */
      public void setPart(Part part)
      {
        this.part = part;
      }

      /**
       * 設置附件存放路徑
       */

      public void setAttachPath(String attachPath)
      {
        this.saveAttachPath = attachPath;
      }

      /**
       * 獲得附件存放路徑
       */

      public String getAttachPath()
      {
        return saveAttachPath;
      }

      /**
       * 設置eml存放路徑
       */

      public void setEmlPath(String emlPath)
      {
        this.saveEmlPath = emlPath;
      }

      /**
       * 獲得eml存放路徑
       */

      public String getEmlPath()
      {
        return saveEmlPath;
      }

      public void setEmlName(String emlName)
      {
        this.emlName = emlName;
      }

      public String getEmlName()
      {
        return emlName;
      }

      public void setAttachName(String attachName)
      {
        this.attachName = attachName;
      }

      public String getAttachName()
      {
        return attachName;
      }

      public void setExtension(String extension)
      {
        this.extension = extension;
      }

      public String getExtension()
      {
        return extension;
      }

      /**
       * 設置日期顯示格式
       */

      public void setDateFormat(String format) throws Exception
      {
        this.dateformat = format;
      }

      /**
       * 獲取日期顯示格式
       */
      public String getDateFormat(String format) throws Exception
      {
        return this.dateformat;
      }

      /**
       * 獲得發件人的地址和姓名
       *
       * @throws Exception
       */
      public String getFrom() throws Exception
      {
        return getFrom(this.message);
      }

      public String getFrom(Message mimeMessage) throws Exception
      {
        InternetAddress address[] = (InternetAddress[]) mimeMessage.getFrom();
        String from = address[0].getAddress();
        if (from == null)
          from = "";
        String personal = address[0].getPersonal();
        if (personal == null)
          personal = "";
        String fromaddr = personal + "<" + from + ">";
        return fromaddr;
      }

      /**
       * 獲得郵件的收件人,抄送,和密送的地址和姓名,根據所傳遞的參數的不同 * "to"----收件人 "cc"---抄送人地址
       * "bcc"---密送人地址
       */
      public String getTOAddress() throws Exception
      {
        return getMailAddress("TO", this.message);
      }

      public String getCCAddress() throws Exception
      {
        return getMailAddress("CC", this.message);
      }

      public String getBCCAddress() throws Exception
      {
        return getMailAddress("BCC", this.message);
      }

      public String getTOAddress(Message mimeMessage) throws Exception
      {
        return getMailAddress("TO", mimeMessage);
      }

      public String getCCAddress(Message mimeMessage) throws Exception
      {
        return getMailAddress("CC", mimeMessage);
      }

      public String getBCCAddress(Message mimeMessage) throws Exception
      {
        return getMailAddress("BCC", mimeMessage);
      }

      public String getMailAddress(String type) throws Exception
      {
        return getMailAddress(type, this.message);
      }

      public String getMailAddress(String type, Message mimeMessage) throws Exception
      {
        String mailaddr = "";
        String addtype = type.toUpperCase();
        InternetAddress[] address = null;
        if (addtype.equals("TO") || addtype.equals("CC")
            || addtype.equals("BCC"))
        {
          if (addtype.equals("TO"))
          {
            address = (InternetAddress[]) mimeMessage
                .getRecipients(Message.RecipientType.TO);
          }
          else if (addtype.equals("CC"))
          {
            address = (InternetAddress[]) mimeMessage
                .getRecipients(Message.RecipientType.CC);
          }
          else
          {
            address = (InternetAddress[]) mimeMessage
                .getRecipients(Message.RecipientType.BCC);
          }
          if (address != null)
          {
            for (int i = 0; i < address.length; i++)
            {
              String email = address[i].getAddress();
              if (email == null)
                email = "";
              else
              {
                email = MimeUtility.decodeText(email);
              }
              String personal = address[i].getPersonal();
              if (personal == null)
                personal = "";
              else
              {
                personal = MimeUtility.decodeText(personal);
              }
              String compositeto = personal + "<" + email + ">";
              mailaddr += "," + compositeto;
            }
            mailaddr = mailaddr.substring(1);
          }
        }
        else
        {
          throw new Exception("Error emailaddr type!");
        }
        return mailaddr;
      }

      /**
       * 獲得郵件主題
       */
      public String getSubject() throws MessagingException
      {
        return getSubject(this.message);
      }

      public String getSubject(Message mimeMessage) throws MessagingException
      {
        String subject = "";
        try
        {
          subject = MimeUtility.decodeText(mimeMessage.getSubject());
          if (subject == null)
            subject = "";
        }
        catch (Exception exce)
        {
        }
        return subject;
      }

      /**
       * 獲得郵件發送日期
       */
      public String getSentDate() throws Exception
      {
        return getSentDate(this.message);
      }

      public String getSentDate(Message mimeMessage) throws Exception
      {
        Date sentdate = mimeMessage.getSentDate();
        SimpleDateFormat format = new SimpleDateFormat(dateformat);
        return format.format(sentdate);
      }

      /**
       * 判斷此郵件是否需要回執,如果需要回執返回"true",否則返回"false"
       */
      public boolean getReplySign() throws MessagingException
      {
        return getReplySign(this.message);
      }

      public boolean getReplySign(Message mimeMessage) throws MessagingException
      {
        boolean replysign = false;
        String needreply[] = mimeMessage
            .getHeader("Disposition-Notification-To");
        if (needreply != null)
        {
          replysign = true;
        }
        return replysign;
      }

      /**
       * 獲得此郵件的Message-ID
       */
      public String getMessageId() throws MessagingException
      {
        return getMessageId(this.message);
      }

      public String getMessageId(Message mimeMessage) throws MessagingException
      {
        return ( (MimeMessage) mimeMessage).getMessageID();
      }

      /**
       * 初始化出錯郵件數組
       *
       */
      private void setRecordFailure()
      {
        this.recordFailure = new boolean[getMessageCount()];
      }

      /**
       * 返回出錯數組
       *
       * @return
       */
      public boolean[] getRecordFailure()
      {
        return this.recordFailure;
      }

      /**
       * 判斷此郵件是否已讀,如果未讀返回返回false,反之返回true
       */
      public boolean isNew() throws MessagingException
      {
        return isNew(this.message);
      }

      /**
       * 判斷此郵件是否已讀,如果未讀返回返回false,反之返回true
       */
      public boolean isNew(Message mimeMessage) throws MessagingException
      {
        boolean isnew = false;
        Flags flags = mimeMessage.getFlags();
        Flags.Flag[] flag = flags.getSystemFlags();
        for (int i = 0; i < flag.length; i++)
        {
          if (flag[i] == Flags.Flag.SEEN)
          {
            isnew = true;
            break;
          }
        }
        return isnew;
      }

      /**
       * 判斷此郵件是否包含附件
       */
      public boolean isContainAttach() throws Exception
      {
        return isContainAttach(this.part);
      }

      /**
       * 判斷此郵件是否包含附件
       */
      public boolean isContainAttach(Part part) throws Exception
      {
        boolean attachflag = false;
        String contentType = part.getContentType();
        if (part.isMimeType("multipart/*"))
        {
          Multipart mp = (Multipart) part.getContent();
          for (int i = 0; i < mp.getCount(); i++)
          {
            BodyPart mpart = mp.getBodyPart(i);
            String disposition = mpart.getDisposition();
            if ( (disposition != null)
                && ( (disposition.equals(Part.ATTACHMENT)) || (disposition
                .equals(Part.INLINE))))
              attachflag = true;
            else if (mpart.isMimeType("multipart/*"))
            {
              attachflag = isContainAttach( (Part) mpart);
            }
            else
            {
              String contype = mpart.getContentType();
              if (contype.toLowerCase().indexOf("application") != -1)
                attachflag = true;
              if (contype.toLowerCase().indexOf("name") != -1)
                attachflag = true;
            }
          }
        }
        else if (part.isMimeType("message/rfc822"))
        {
          attachflag = isContainAttach( (Part) part.getContent());
        }
        return attachflag;
      }

      /**
       * 連到server,創建folder對象,創建message對象
       */
      public void getConn()
      {
        try
        {
          this.getStoreFromServer();
          this.getFolderFromStore();
        }
        catch (Exception e)
        {
          otherError = true;
          mailDownErrorCounter++;
          System.out.print(e.getLocalizedMessage());
        }
      }

      /**
       * 建立Store連接
       */
      private Store getStoreFromServer() throws Exception
      {
        //創建session
        Session session = Session.getDefaultInstance(System.getProperties(),
            null);
        //session.setDebug(true);

        //創建store,建立連接
        Store store = session.getStore(protocol);
        System.out.println("connecting");
        store.connect(mailHost, userName, password);
        System.out.println("connected successfully");
        setStore(store);
        return store;
      }

      /**
       * 打開INBox文件夾
       */
      private Folder getFolderFromStore()
      {
        //打開郵件相應文件夾
        Folder getFolder;
        try
        {
          getFolder = store.getFolder("INBOX");
          getFolder.open(Folder.READ_ONLY);
          setFolder(getFolder);
          return getFolder;
        }
        catch (MessagingException e)
        {
          // TODO Auto-generated catch block
          System.err.println("獲取Folder失敗!");
          e.printStackTrace();
        }
        return null;
      }

      /**
       * 從folder中提取所有的messages
       *
       * @throws MessagingException
       */
      public void getAllMessages() throws MessagingException
      {
        //從郵件文件夾獲取郵件信息
        Message[] messages = folder.getMessages();
        setMessages(messages);
        setRecordFailure(); //初始化出錯數組
        //        setMessageCount();
      }

      /**
       * 獲得messageNums數組指定的message
       *
       * @param messageNums
       * @throws MessagingException
       */
      public void getMessages(int[] messageNums) throws MessagingException
      {
        Message[] messages = folder.getMessages(messageNums);
        setMessages(messages);
        setRecordFailure(); //初始化出錯數組
        //        setMessageCount();
      }

      /**
       * 獲得start和end之間的message
       *
       * @param start
       * @param end
       * @throws MessagingException
       */
      public void getMessages(int start, int end) throws MessagingException
      {
        Message[] messages = folder.getMessages(start, end);
        setMessages(messages);
        setRecordFailure(); //初始化出錯數組
        //        setMessageCount();
      }

      /**
       * 關閉連接
       */
      public void closeConnection()
      {
        try
        {
          messages = null;
          message = null;
          if (folder.isOpen())
            folder.close(true);
          store.close();
          System.out.println("close");
        }
        catch (Exception e)
        {
          System.out.println("關閉和郵件服務器之間連接時出錯!");
          e.printStackTrace();
        }
      }

      /**
       * 獲得當前郵件的基本方法 Pop3Bean內部應該調用這個方法 以便在調用函數中加入重試機制
       *
       * @throws MessagingException
       * @throws MessagingException
       *
       */
      public void getMail() throws Throwable
      { //拋出異常,用以重擲
        try
        {
          saveMessageAs(message);
          parseMessage(message);
        }
        catch (IOException e)
        {
          // TODO Auto-generated catch block
          System.err.println("保存郵件出錯,檢查保存路徑");
          throw new IOException("保存郵件出錯,檢查保存路徑");
        }
        catch (MessagingException e)
        {
          // TODO Auto-generated catch block
          System.err.println("郵件轉換出錯");
          throw new MessagingException("郵件轉換出錯");
        }
        catch (Exception e)
        {
          System.err.println("未知錯誤");
          otherError = true;
          e.printStackTrace();
          throw new Exception("未知錯誤");
        }
      }

      /**
       * 獲得指定的郵件
       *
       * @param index
       */
      public void getMail(int index)
      {
        mailDownErrorCounter = 0; //郵件下載出錯計數器置零
        try
        { //獲取郵件下載之前的錯誤
          setMessage(messages[index]); //設置當前message
          System.out.println("正在獲取第" + index + "封郵件. . .");
          getMail(); //獲取當前message
          System.out.println("成功獲取第" + index + "封郵件");
        }
        catch (Throwable e)
        { //獲得重擲異常
          recordFailure[index] = true;
          mailDownErrorCounter++;
          System.err.println("下載第" + index + "封郵件時出錯");
          retry();
        }
      }

      /**
       * 獲取messages中的所有郵件
       */
      public void getAllMail()
      {
        int mailArrayLength; //將要下載的郵件的數量。若是重試時,則為還未下載的郵件數量

        mailArrayLength = getMessageCount();

        System.out.println("一共有郵件" + mailArrayLength + "封");

        mailDownErrorCounter = 0; //郵件下載出錯計數器置零
        mailCounter = 0;
        for (int index = 0; index < mailArrayLength; index++)
        {
          try
          {
            setMessage(messages[index]); //設置當前message
            System.out.println("正在獲取第" + index + "封郵件. . .");
            getMail(); //獲取當前message
            System.out.println("成功獲取第" + index + "封郵件");
            mailCounter++;
          }
          catch (Throwable e)
          {
            otherError = false;
            recordFailure[index] = true;
            mailDownErrorCounter++;
            System.err.println("下載第" + index + "封郵件時出錯");
          }
        }
        System.out.println("成功下載" + mailCounter + "封郵件");
        mailCounter = 0;
        if (mailDownErrorCounter != 0)
          retry();
      }

      /**
       * 保存郵件源文件
       */

      public void saveMessageAs(Message message)
      {
        String oriFileName;
        String fileExtend;

        try
        {
          oriFileName = getInfoBetweenBrackets(getMessageId(message)
              .toString());
          //設置文件后綴名。若是附件則設法取得其文件后綴名作為將要保存文件的后綴名,若是正文部分則用.htm做后綴名
          String emlName = oriFileName;
          String fileNameWidthExtension = getEmlPath() + oriFileName
              + getExtension();
          File storeFile = new File(fileNameWidthExtension);
          for (int i = 0; storeFile.exists(); i++)
          {
            emlName = oriFileName + i;
            fileNameWidthExtension = getEmlPath() + emlName
                + getExtension();
            storeFile = new File(fileNameWidthExtension);
          }
          setEmlName(emlName);
          System.out.println("storefile's path: " + fileNameWidthExtension);
          ByteArrayOutputStream baos = new ByteArrayOutputStream();
          message.writeTo(baos);
          StringReader in = new StringReader(baos.toString());
          saveFile(fileNameWidthExtension, in);
        }
        catch (MessagingException e)
        {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
        catch (Exception e)
        {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }

      /*
       * 解析郵件
       */
      public void parseMessage(Message message) throws IOException,
          MessagingException
      {
        Object content = message.getContent();
        if (content instanceof Multipart)
        {
          handleMultipart( (Multipart) content);
        }
        else
        {
          handlePart(message);
        }
      }

      /*
       * 解析Multipart
       */
      public void handleMultipart(Multipart multipart) throws MessagingException,
          IOException
      {
        for (int i = 0, n = multipart.getCount(); i < n; i++)
        {
          handlePart(multipart.getBodyPart(i));
        }
      }

      /*
       * 解析指定part,從中提取文件
       */
      public void handlePart(Part part) throws MessagingException, IOException
      {
        String disposition = part.getDisposition(); // Find attachment
        String contentType = part.getContentType();
        String str;
        InputStreamReader sbis = new InputStreamReader(part.getInputStream());
        if (disposition == null)
        { // When just body
          System.out.println("Null: " + contentType);
          // Check if plain
          if ( (contentType.length() >= 9)
              && (contentType.toLowerCase().substring(0, 9)
              .equals("text/plai")))
          {

            System.out.println(getAttachPath() + getEmlName() + ".txt");
            saveFile(getAttachPath() + getEmlName() + ".txt", sbis);
          }
          else if ( (contentType.length() >= 8) // Check if html
              && (contentType.toLowerCase().substring(0, 8)
              .equals("text/htm")))
          {
            saveFile(getAttachPath() + getEmlName() + ".html", sbis);
          }
          else if ( (contentType.length() >= 9) // Check if html
              && (contentType.toLowerCase().substring(0, 9)
              .equals("image/gif")))
          {
            saveFile(getAttachPath() + getEmlName() + ".gif", sbis);
          }
          else if ( (contentType.length() >= 10)
              && contentType.toLowerCase().substring(0, 10).equals(
              "multipart/"))
          { // Check if multipart
            System.out.println("multipart body: " + contentType);
            Multipart mp = (Multipart) (part.getContent());
            handleMultipart(mp);
          }
          else
          { // Unknown type
            System.out.println("Other body: " + contentType);
            saveFile(getAttachPath() + getEmlName() + ".txt", sbis);
          }
        }
        else if (disposition.equalsIgnoreCase(Part.ATTACHMENT))
        {
          System.out.println("Attachment: " + part.getFileName() + " : "
              + contentType);
          //outToFile.println("Attachment: " + part.getFileName() + " : "
          //        + contentType);
          saveFile(getAttachPath() + part.getFileName(), sbis);
        }
        else if (disposition.equalsIgnoreCase(Part.INLINE))
        {
          System.out.println("Inline: " + part.getFileName() + " : "
              + contentType);
          //outToFile.println("Inline: " + part.getFileName() + " : "
          //        + contentType);
          saveFile(getAttachPath() + part.getFileName(), sbis);
        }
        else
        { // Should never happen
          System.out.println("Other: " + disposition);
          //            outToFile.println("Other: " + disposition);
        }
      }

      public void saveFile(String fileName, Reader input) throws IOException
      {
        if (fileName == null)
        {
          fileName = File.createTempFile(getAttachPath() + "xx", ".out")
              .getName();
        }
        // Do no overwrite existing file
        File file = new File(fileName);
        int lastDot = fileName.lastIndexOf(".");
        String extension = fileName.substring(lastDot);
        String fullFileName = fileName;
        fileName = fileName.substring(0, lastDot);
        for (int i = 0; file.exists(); i++)
        {
          file = new File(fileName + i + extension);
        }
        FileWriter fos = new FileWriter(file);
        BufferedWriter bos = new BufferedWriter(fos);
        BufferedReader bis = new BufferedReader(input);
        int aByte;
        while ( (aByte = bis.read()) != -1)
        {
          bos.write(aByte);
        }
        bos.flush();
        bos.close();
        bis.close();
      }

      public void readEmlFile(String fileName) throws MessagingException
      {
        try
        {
          //TODO readEmlFile
          InputStream fis = new FileInputStream(fileName);
          Object emlObj = (Object) fis;
          Session mailSession = Session.getDefaultInstance(System.getProperties(), null);
          MimeMessage msg = new MimeMessage(mailSession, fis);
          message = msg;

        }
        catch (FileNotFoundException e)
        {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }

      private String getInfoBetweenBrackets(String str) throws Exception
      {
        int i, j; //用于標識字符串中的"<"和">"的位置
        if (str == null)
        {
          str = "error";
          return str;
        }
        i = str.lastIndexOf("<");
        j = str.lastIndexOf(">");
        if (i != -1 && j != -1)
          str = str.substring(i + 1, j);
        return str;
      }

      //當有郵件無法下載時進行重試
      private void retry()
      {
        mailCounter = 0;
        while (retryTimeCounter < totalRetryTimes && mailDownErrorCounter != 0)
        {
          if (!store.isConnected() || !folder.isOpen())
          {
            System.err.println("與服務器連接斷開,請重新連接");
            closeConnection();
            return;
          }

          System.out.println("第" + (retryTimeCounter + 1) + "次重試");

          mailDownErrorCounter = 0; //郵件下載出錯計數器置零

          for (int index = 0; index < getMessageCount(); index++)
          {
            if (recordFailure[index])
            {
              try
              {
                setMessage(messages[index]); //設置當前message
                System.out.println("正在獲取第" + index + "封郵件. . .");
                getMail(); //獲取當前message
                System.out.println("成功獲取第" + index + "封郵件");
                mailCounter++;
                recordFailure[index] = false;
              }
              catch (Throwable e)
              {
                otherError = false;
                recordFailure[index] = true;
                mailDownErrorCounter++;
                System.err.println("重新下載第" + index + "封郵件時出錯");
              }
            }
          }
          retryTimeCounter++;
        }
        System.out.println("成功下載" + mailCounter + "封郵件");
        mailCounter = 0; //將郵件計數置零
        mailDownErrorCounter = 0; //下載錯誤數量歸零
      }

          public static void main(String[] args) throws Throwable
          {

            try
            {
              Pop3Bean mail;
              mail = new Pop3Bean();
              mail.setUserName("abc");
              mail.setMailHost("pop3.sohu.com");
              mail.setPassword("***");
              mail.setAttachPath("e:/test/");
              mail.setExtension(".eml");
              mail.setDateFormat("yyyydddd");

              mail.getConn();
              System.out.println("Count of messages in folder: " + mail.getAllMessageCount());
              System.out.println("Count of new messages in folder: " + mail.getNewMessageCount());
              System.out.println("Count of unread messages in folder: " + mail.getUnreadMessageCount());
              mail.getAllMessages();
              System.out.println("Count of loaded messages: " + mail.getMessageCount());
              mail.getAllMail();
              mail.setCurMessage(0);
             System.out.println(mail.getSubject());
              mail.closeConnection();
      //   ReadEml mail = new ReadEml("H:\\My_Soft_Works\\java\\jteam\\jmail\\received\\41C95D0F.008CD1.01099.eml");

            }
            catch (Exception e)
            {
              System.out.println("出現未預料的錯誤!");
              e.printStackTrace();
            }
          }
        }


    主站蜘蛛池模板: 国产成人久久AV免费| 成人av片无码免费天天看| 222www免费视频| 亚洲福利一区二区精品秒拍| 久久午夜夜伦鲁鲁片免费无码| 在线a亚洲v天堂网2019无码| 亚洲精品国产日韩无码AV永久免费网| 亚洲成a人片在线观看日本麻豆 | 成人女人A级毛片免费软件| 亚洲国产精品白丝在线观看| 91免费国产自产地址入| 亚洲最大成人网色香蕉| 全免费a级毛片免费看不卡| 亚洲精华国产精华精华液| 国产v片免费播放| 毛片基地看看成人免费| 亚洲AV无码日韩AV无码导航| 桃子视频在线观看高清免费视频| 久久国产亚洲高清观看| 欧美大尺寸SUV免费| 麻豆安全免费网址入口| 久久精品视频亚洲| 日本在线高清免费爱做网站| 亚洲精品第一国产综合亚AV| 亚洲午夜av影院| 在线观看永久免费| 亚洲国产精品久久久久秋霞小 | 亚洲一区免费在线观看| 一区二区亚洲精品精华液| 亚洲国产精品专区在线观看| 无码精品国产一区二区三区免费| 亚洲人成网站在线观看播放青青| 精品国产麻豆免费网站| 91成人免费福利网站在线| 亚洲一区二区三区亚瑟| 亚洲国产成人精品女人久久久 | 亚洲今日精彩视频| 国产精品免费一级在线观看| 国产偷伦视频免费观看| 亚洲欧洲国产综合AV无码久久| 国产精品亚洲二区在线观看|