posts - 0, comments - 77, trackbacks - 0, articles - 356
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Pop3Bean接收邮件

Posted on 2007-08-21 08:55 semovy 阅读(518) 评论(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();
  }
 }*/
}


只有注册用户登录后才能发表评论。


网站导航: