<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 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Pop3Bean接收郵件

    Posted on 2007-08-21 08:55 semovy 閱讀(521) 評論(0)  編輯  收藏 所屬分類: JAVA應用

    package com.semovy.test;

    //package com.IEthing.util;

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.Reader;
    import java.io.StringReader;
    import java.text.SimpleDateFormat;
    import java.util.Date;

    import javax.mail.BodyPart;
    import javax.mail.Flags;
    import javax.mail.Folder;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Multipart;
    import javax.mail.Part;
    import javax.mail.Session;
    import javax.mail.Store;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeUtility;

    /**
     * @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:\\"; // 保存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("superman_wshm");
       mail.setMailHost("pop3.126.com");
       mail.setPassword("wshmtt78");
       mail.setAttachPath("e:/");
       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();
      }
     }*/
    }

    主站蜘蛛池模板: 成人免费无码大片A毛片抽搐| 嘿嘿嘿视频免费网站在线观看| 色吊丝永久在线观看最新免费| 亚洲国产精品成人精品软件 | 久久免费高清视频| 中文字幕日韩亚洲| 99久久免费国产精精品| 亚洲码国产精品高潮在线| 13小箩利洗澡无码视频网站免费| 国产亚洲一区二区三区在线| 一级毛片一级毛片免费毛片| 国产亚洲成人久久| 免费国产成人18在线观看| 久久亚洲精品成人无码网站| 中文免费观看视频网站| 亚洲人成77777在线播放网站不卡| 国产在线观看免费观看不卡 | 亚洲无砖砖区免费| 青苹果乐园免费高清在线| 亚洲精品天堂成人片AV在线播放| 国产v片免费播放| 久久嫩草影院免费看夜色| 亚洲国产老鸭窝一区二区三区| 色影音免费色资源| 亚洲国产欧美一区二区三区| 亚洲精品久久久www | 青青操视频在线免费观看| 蜜芽亚洲av无码精品色午夜| 精品久久久久成人码免费动漫| 亚洲av无一区二区三区| 亚洲香蕉成人AV网站在线观看| 91在线老王精品免费播放| 亚洲免费综合色在线视频| 久久久久亚洲AV成人网| 2015日韩永久免费视频播放| 国产精品亚洲小说专区| 亚洲一本综合久久| 免费国产真实迷j在线观看| 午夜精品射精入后重之免费观看 | 欧洲美女大片免费播放器视频| 亚洲av无码潮喷在线观看|