国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
用java收郵件

用java收郵件- -

                                      

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

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; //郵件計數(shù)

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

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

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

  private int totalRetryTimes; //總共重試次數(shù)

  private int retryTimeCounter; //記下重試的次數(shù)

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

  private String extension=".eml"; //文件擴(kuò)展名

  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; //默認(rèn)的日前顯示格式

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

  private String protocol="pop3"; //服務(wù)協(xié)議

  private String mailHost; //服務(wù)器地址

  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"));*/
  }

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

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

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

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

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

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

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

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

  /**
   * 設(shè)置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數(shù)量
   *
   * @throws MessagingException
   */
  public int getAllMessageCount() throws MessagingException
  {
    this.allMessageCount = folder.getMessageCount();
    return allMessageCount;
  }

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

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

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

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

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

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

  /**
   * 設(shè)置附件存放路徑
   */

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

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

  public String getAttachPath()
  {
    return saveAttachPath;
  }

  /**
   * 設(shè)置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;
  }

  /**
   * 設(shè)置日期顯示格式
   */

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

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

  /**
   * 獲得發(fā)件人的地址和姓名
   *
   * @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;
  }

  /**
   * 獲得郵件的收件人,抄送,和密送的地址和姓名,根據(jù)所傳遞的參數(shù)的不同 * "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;
  }

  /**
   * 獲得郵件發(fā)送日期
   */
  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);
  }

  /**
   * 判斷此郵件是否需要回執(zhí),如果需要回執(zhí)返回"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();
  }

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

  /**
   * 返回出錯數(shù)組
   *
   * @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,創(chuàng)建folder對象,創(chuàng)建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
  {
    //創(chuàng)建session
    Session session = Session.getDefaultInstance(System.getProperties(),
        null);
    //session.setDebug(true);

    //創(chuàng)建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()
  {
    //打開郵件相應(yīng)文件夾
    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(); //初始化出錯數(shù)組
    //        setMessageCount();
  }

  /**
   * 獲得messageNums數(shù)組指定的message
   *
   * @param messageNums
   * @throws MessagingException
   */
  public void getMessages(int[] messageNums) throws MessagingException
  {
    Message[] messages = folder.getMessages(messageNums);
    setMessages(messages);
    setRecordFailure(); //初始化出錯數(shù)組
    //        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(); //初始化出錯數(shù)組
    //        setMessageCount();
  }

  /**
   * 關(guān)閉連接
   */
  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("關(guān)閉和郵件服務(wù)器之間連接時出錯!");
      e.printStackTrace();
    }
  }

  /**
   * 獲得當(dāng)前郵件的基本方法 Pop3Bean內(nèi)部應(yīng)該調(diào)用這個方法 以便在調(diào)用函數(shù)中加入重試機(jī)制
   *
   * @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("郵件轉(zhuǎn)換出錯");
      throw new MessagingException("郵件轉(zhuǎn)換出錯");
    }
    catch (Exception e)
    {
      System.err.println("未知錯誤");
      otherError = true;
      e.printStackTrace();
      throw new Exception("未知錯誤");
    }
  }

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

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

    mailArrayLength = getMessageCount();

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

    mailDownErrorCounter = 0; //郵件下載出錯計數(shù)器置零
    mailCounter = 0;
    for (int index = 0; index < mailArrayLength; index++)
    {
      try
      {
        setMessage(messages[index]); //設(shè)置當(dāng)前message
        System.out.println("正在獲取第" + index + "封郵件. . .");
        getMail(); //獲取當(dāng)前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());
      //設(shè)置文件后綴名。若是附件則設(shè)法取得其文件后綴名作為將要保存文件的后綴名,若是正文部分則用.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; //用于標(biāo)識字符串中的"<"和">"的位置
    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;
  }

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

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

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

      for (int index = 0; index < getMessageCount(); index++)
      {
        if (recordFailure[index])
        {
          try
          {
            setMessage(messages[index]); //設(shè)置當(dāng)前message
            System.out.println("正在獲取第" + index + "封郵件. . .");
            getMail(); //獲取當(dāng)前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; //將郵件計數(shù)置零
    mailDownErrorCounter = 0; //下載錯誤數(shù)量歸零
  }

      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("出現(xiàn)未預(yù)料的錯誤!");
          e.printStackTrace();
        }
      }
    }

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
黑馬 JavaMail加深總結(jié)pop3協(xié)議收郵件
javamail 收郵件 解析eml文件
JAVA MAIL發(fā)送郵件
JavaMail 深入淺出
Java鍵盤輸入
幾個解析XML的例子
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服