⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 messagedata.java

📁 java xml开发指南(初学者推荐)Java Xml 编程指南书籍源码
💻 JAVA
字号:
package MyNa.xml;

import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import MyNa.utils.Env;

public class MessageData {
// this class adds some simple utilities to Message
// so that we can pass questions and get answers.
// in effect, it makes a message look like a jdbc row
// with a getString(String columnLabel) method.

// so far: msgfromaddr,msgtoaddr,msgdate,msgsubject,
//         msgsize,msgflags,msgxmailer,msgcontent

// we can't say "MessageData extends Message"
// because Message is an abstract class, but that's okay:

  Message m; 
  static String[] allLabels=
    {"msgfromaddr","msgtoaddr","msgdate","msgsubject","msgsize","msgflags","msgxmailer","msgcontent"};
  static String[] defaultLabels=
    {"msgfromaddr","msgtoaddr","msgdate","msgsubject","msgsize","msgflags","msgxmailer"};

  String[]columnLabels;
  
public static String[] getAllLabels(){return allLabels;}
public static String[] getDefaultLabels(){return defaultLabels;}

public MessageData(Message m){this(m,defaultLabels);}
public MessageData(Message msg,String[]lbls)
   {m=msg;columnLabels=(lbls==null||lbls.length==0)?defaultLabels:lbls;}
 
public String getString(String S)throws Exception{
  if("msgfromaddr".equalsIgnoreCase(S))return getFromString();
  if("msgtoaddr".equalsIgnoreCase(S))return getToString();
  if("msgdate".equalsIgnoreCase(S))return getDateString();
  if("msgsubject".equalsIgnoreCase(S))return getSubjectString();
  if("msgsize".equalsIgnoreCase(S))return getSizeString();
  if("msgflags".equalsIgnoreCase(S))return getFlagsString();
  if("msgxmailer".equalsIgnoreCase(S))return getXMailerString();
  if("msgcontent".equalsIgnoreCase(S))return getContentString();
  return "ERROR: don't know how to get "+S+" from message";
}


public void addToEnv(Env E)throws Exception{ //put designated headers in env
  if(null==columnLabels)throw new Exception("null columnlabels in addToEnv");
  if(null==E)throw new Exception("null environment in addToEnv");
  for(int i=0;i<columnLabels.length;i++)
    E.put(columnLabels[i],getString(columnLabels[i]));
}

public String getFromString()throws Exception{
  Address[]a=m.getFrom();
  if(null==a || a.length==0)return "";
  String S=a[0].toString();
  for(int i=1;i<a.length;i++)S+="\n"+a[i].toString();
  return S;
}
public String getToString()throws Exception{
  Address[]a=m.getRecipients(Message.RecipientType.TO);
  if(null==a || a.length==0)return "";
  String S=a[0].toString();
  for(int i=1;i<a.length;i++)S+="\n"+a[i].toString();
  return S;
}
public String getSubjectString()throws Exception{return m.getSubject();}

public String getDateString()throws Exception{
  Date d=m.getSentDate();
  return d==null?"NoSendingDate":d.toString();
}
public String getSizeString()throws Exception{return ""+m.getSize();}

public String getFlagsString()throws Exception{
  Flags flags=m.getFlags();
  StringBuffer sb=new StringBuffer();
  Flags.Flag[] sf=flags.getSystemFlags();
  for(int i=0;i<sf.length;i++)
    sb.append(sysFlagString(sf[i]));
  String[]uf=flags.getUserFlags();
  for(int i=0;i<uf.length;i++)
    sb.append(uf[i]);
  return sb.toString();
}

public String getMessageString()throws Exception{
  StringWriter sw=new StringWriter(100);
  PrintWriter out=new PrintWriter(sw);
  msgToXml(m,out);
  return sw.toString();
}
public String getContentString()throws Exception{
  StringWriter sw=new StringWriter(100);
  PrintWriter out=new PrintWriter(sw);
  msgContentToXml(m.getContent(),out);
  return sw.toString();
}

public String getXMailerString()throws Exception{
  String[]hdrs = m.getHeader("X-Mailer");
  if(null==hdrs)return "No X-Mailer";
  return hdrs[0];
}

public static String sysFlagString(Flags.Flag f){
    if(f==Flags.Flag.ANSWERED) return "/ans";
    if(f==Flags.Flag.DELETED) return "/del";
    if(f==Flags.Flag.DRAFT) return "/drft";
    if(f==Flags.Flag.FLAGGED) return "/flg";
    if(f==Flags.Flag.RECENT) return "/rcnt";
    if(f==Flags.Flag.SEEN) return "/seen";   
    return "";
}

public static void msgToXml(Message m,PrintWriter out) throws Exception {
  out.print("<message content_type=\"");
  out.print(m.getContentType());
  out.println("\">");
  msgEnvelopeToXml(m,out);
  msgContentToXml(m.getContent(),out);
  out.print("</message>");
}
public static void msgContentToXml(Object o,PrintWriter out) throws Exception{
  if(o instanceof String)out.println((String)o);
  else if(o instanceof Multipart){
    Multipart mp=(Multipart)o;
    out.println("<multipart>");
    for(int N=mp.getCount(),i=0;i<N;i++)
      msgPartToXml(mp.getBodyPart(i),out);
    out.println("</multipart>");
    }
  else if (o instanceof Message)msgToXml((Message)o,out);
  else if (o instanceof InputStream){ // lazy string; coerce it
    InputStream is=(InputStream)o;
    int c;
    while(-1 != (c = is.read()))out.write(c);
    }
}
public static void msgPartToXml(Part p,PrintWriter out)throws Exception{
  if(p instanceof Message){msgToXml((Message)p,out); return;}
  out.print("<messagepart content_type=\"");
  out.print(p.getContentType());
  out.println("\">");
  msgContentToXml(p.getContent(),out);
  out.println("</messagepart>");
}
public static void msgEnvelopeToXml(Message m,PrintWriter out)throws Exception{
 msgEnvelopeToXml(m,out,defaultLabels);
}
public static void msgEnvelopeToXml(Message m,PrintWriter out,String[]L)
    throws Exception{
  MessageData md=new MessageData(m,L);
  for(int i=0;i<L.length;i++){
    out.print("<message_");out.print(L[i]);out.print(">");
    out.print(md.getString(L[i]));
    out.print("</message_");out.print(L[i]);out.println(">");
    }
}


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -