收郵件列表
<%@ page contentType="text/html;charset=big5"%>
<%@ page language="java" import="java.util.*"%>
<%@ page import="javax.mail.*"%>
<%@ page import="javax.mail.internet.*"%>
<%@ page import="java.text.SimpleDateFormat"%><HTML>
<HEAD>
<TITLE>收件夾</TITLE>
</HEAD>
<BODY>
<%
String szUser=(String)session.getAttribute("username");
String szPwd=(String)session.getAttribute("pwd");
String szHost=(String)session.getAttribute("pop3svr");
String szAcc=(String)session.getAttribute("mailacc");
out.println("<font face='Fixedsys'>" + szAcc + "</font><br>");
%>
收件夾
<table border="1" width="100%" cellspacing="1" bordercolorlight="#C0C0C0" bordercolordark="#FFFFFF">
  <tr>
    <td width="7%" bgcolor="#EBEBEB" align="center" height="20">選擇</td>
    <td width="7%" bgcolor="#EBEBEB"  align="center">狀態</td>
    <td width="20%" bgcolor="#EBEBEB" align="center">發件人</td>
    <td width="22%" bgcolor="#EBEBEB" align="center">日期</td>
    <td width="34%" bgcolor="#EBEBEB" align="center">主題</td>
    <td width="10%" bgcolor="#EBEBEB" align="center">長度</td>
  </tr>
<%
String szDate="";
SimpleDateFormat smpDateFormat;
smpDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm");
try{
    Properties props = new Properties(); //java.util.Properties
    Session mailsession = Session.getDefaultInstance(props, null);//Get session    //javax.mail.Session    Store store = mailsession.getStore("pop3"); //Get the store  //javax.mail.Store
    store.connect(szHost,szUser,szPwd);    Folder folder = store.getFolder("INBOX"); //Get folder  //javax.mail.Folder
    folder.open(Folder.READ_ONLY);//folder.open(Folder.READ_WRITE); //讀寫方式,可以刪除郵件    //Folder[] folders=folder.list();
    Message message[] = folder.getMessages();  //Get directory  //javax.mail.Message
    //int k=folder.getUnreadMessageCount();//得到新郵件數
    //int m=folder.getMessageCount(); //得到所有郵件數    int n=message.length;
    for (int i=0; i<n; i++) {//message[i].setFlag(Flags.Flag.DELETED,true); //設定刪除標志
        //System.out.println(i + ": " + message[i].getFrom()[0] + "\t" + message[i].getSubject());
        out.println("<tr>");
        out.println("<td height='20' align='center'>*</td>");
        if (message[i].getFlags().contains(Flags.Flag.SEEN)) //已讀
            out.println("<td align='center'>OLD</td>");
        else //新郵件
            out.println("<td align='center'>NEW</td>");
        out.println("<td align='center'><a href='viewmail.jsp?sid=" + i +"'><font face='Fixedsys'>" + ((InternetAddress)message[i].getFrom()[0]).getAddress() + "</font></a></td>");
        szDate =smpDateFormat.format(message[i].getSentDate());
        out.println("<td align='center'><font face='Fixedsys'>" + szDate +"</font></td>");
        out.println("<td align='center'>" + message[i].getSubject() +"</td>");
        out.println("<td align='center'><font face='Fixedsys'>" + message[i].getSize() + "Byte</font></td>");
        out.println("</tr>");
    }
    //Close connection
    folder.close(false);  //folder.close(true); //如果要刪除有DELETE標記的郵件,需設置true
    store.close();
}
catch(javax.mail.MessagingException  e){
    System.out.println(e.getMessage());
    return ;
}
%>
</table></BODY>
</HTML>

解决方案 »

  1.   

    查看某一封郵件
    <%@ page contentType="text/html;charset=big5"%>
    <%@ page language="java" import="java.util.*"%>
    <%@ page import="java.lang.*"%>
    <%@ page import="javax.mail.*"%>
    <%@ page import="javax.mail.internet.*"%>
    <%@ page import="java.io.*"%>
    <%@ page import="java.text.SimpleDateFormat"%><!--%!
    public String getPart(Part part, int partNum)  throws  MessagingException,IOException
    {
        String s="";
        String sct = part.getContentType();
        if (sct == null) {
            s="part 無效";
            return s;
        }    if (sct.equals("text/html")||sct.equals("text/plain")){
            s=MimeUtility.decodeText((String)part.getContent());
            System.out.println(s);
            return s;
        }//else if(partNum!=0) {
        //    String temp="";
        //   if ((temp = part.getFileName()) != null)  s= "<b>Filename:</b> " + temp + "<br>";
        //}    if(part.isMimeType("multipart/alternative")) {
            Multipart mp = (Multipart)part.getContent();
            int count = mp.getCount();
            //System.out.println("XXXX:" + count);
            //s=s+getPart(mp.getBodyPart(1),1);
            for (int i = 0; i < count; i++)  {     //System.out.print("00000*****:" +i);
                if(mp.getBodyPart(i).isMimeType("text/plain")||mp.getBodyPart(i).isMimeType("text/html")) s=s + getPart(mp.getBodyPart(i),i);
            }
            System.out.println(s);
            return  s;
        }
        System.out.println( s);
        return s;
    }
    %>
    --><%
    String szUser=(String)session.getAttribute("username");
    String szPwd=(String)session.getAttribute("pwd");
    String szHost=(String)session.getAttribute("pop3svr");
    String szAcc=(String)session.getAttribute("mailacc");
    out.println("<font style='font-family:arial' size='4'>"+ szAcc +"</font><br>");
    SimpleDateFormat smpDateFormat;
    String szId=request.getParameter("sid");
    int nid=java.lang.Integer.parseInt(szId);
    smpDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm");try{
        Properties props = new Properties(); //java.util.Properties
        Session mailsession = Session.getDefaultInstance(props, null);//Get session    //javax.mail.Session    Store store = mailsession.getStore("pop3"); //Get the store  //javax.mail.Store
        store.connect(szHost,szUser,szPwd);    Folder folder = store.getFolder("INBOX"); //Get folder  //javax.mail.Folder
        folder.open(Folder.READ_ONLY);//folder.open(Folder.READ_WRITE); //讀寫方式,可以刪除郵件    Message message[] = folder.getMessages();  //Get directory  //javax.mail.Message
        //message[nid].setFlag(Flags.Flag.SEEN,true);
        String szFrom=((InternetAddress)message[nid].getFrom()[0]).getAddress(); //取得真實的發件人地址    String szSubject=MimeUtility.decodeText(message[nid].getSubject());
        String szDate=smpDateFormat.format(message[nid].getSentDate());
        String szBody="";
        String szAttach="";    //Address addrFrom[]=message[nid].getFrom();  //for (k=0;k<addrFrom.length;k++) szFrom=szFrom+ addrFrom[k].toString();    out.println("<table border='0' width='100%' cellpadding='2'><tr>");
        out.println("<td width='100%' colspan='2' bgcolor='#F0F0F0'>");
        out.println("<table border='0' width='100%' cellpadding='2'><tr>");
        out.println("<td width='15%' align='center'>發件人 :</td>");
        out.println("<td width='85%'><font face='Fixedsys'>" + szFrom +"</font></td></tr>");
        out.println("<tr><td align='center'>日&nbsp;&nbsp;&nbsp; 期 :</td>");
        out.println("<td><font face='Fixedsys'>" + szDate +"</font></td></tr>");
        out.println("<tr><td align='center'>主&nbsp;&nbsp;&nbsp; 題 :</td>");
        out.println("<td>"+ szSubject +"</td></tr></table>");
        out.println("</td></tr>");   //System.out.println(szFrom +":" + szDate+":" + szSubject);    //提取郵件正文內容    //String szType=message[nid].getContentType();    //提取郵件中的附件
        String szType=message[nid].getContentType();
        System.out.println("正文********" + szType);
        Object out_content = message[nid].getContent();
        if(!(out_content instanceof Multipart)) //無附件
        {
            szBody=message[nid].getContent().toString();
        }else{ //有附件
            Multipart mp = (Multipart)message[nid].getContent();
            String szFile="";
            File ffile;        String szpath=application.getRealPath("/")+szUser;
            ffile = new File(szpath);
            if(!ffile.exists()) ffile.mkdir();
            szpath=szpath+ "\\tmp";    //System.out.println("路徑:" + szpath);        String szTmp="";
            ffile = new File(szpath);
            if(!ffile.exists()) ffile.mkdir();
            for (int i=0,n=mp.getCount(); i<n; i++) {
                Part part = mp.getBodyPart(i);
                String szMbp=part.getContentType();
                System.out.println("IDX:" + i+ " :類型" + szMbp);
                String disposition = part.getDisposition();
                if((disposition != null) && ((disposition.equals(Part.ATTACHMENT)||(disposition.equals(Part.INLINE))))){
                    //創建一個文件,並從輸入流中流讀取字節,存入到文件中     //MimeUtility.decodeText()            //System.out.println(MimeUtility.decodeText(part.getFileName()));            //out.println("附件: " + MimeUtility.decodeText(part.getFileName())  + " 附件大小" + part.getSize());
                    szFile=MimeUtility.decodeText(part.getFileName());
                    szTmp=szFile;            //out.println("FILE: " + szpath + "/" + szFile);
                    ffile = new File(szpath + "/" + szFile);      //for (k=0; ffile.exists(); k++){    //    szTmp=k+szFile;            //    System.out.println("FILE: " + szpath + "/" + k+ szFile );            //    ffile = new File(szpath + "/" + k + szFile);            //}            //System.out.println("文件名:"+ szFile);                FileOutputStream outfile = new FileOutputStream(ffile);
                    BufferedInputStream br = new BufferedInputStream(part.getInputStream());
                    BufferedOutputStream bw = new BufferedOutputStream(outfile);
                    int b;
                    while ((b = br.read()) != -1)   bw.write(b);
                    bw.flush();
                    szAttach=szAttach+"<br><a href='../webmail/" + szUser +"/tmp/"+ szTmp + "'>" + szTmp  + "</a>";
                }else if(disposition==null){
                    MimeBodyPart mbp = (MimeBodyPart)part;
                    if (mbp.isMimeType("text/plain")||mbp.isMimeType("text/html")){ //普通正文
                        szBody=mbp.getContent().toString();
                        szBody=szBody.replaceAll("\r\n","<br>");
                    }else if(mbp.isMimeType("multipart/alternative")) { //HTML正文
                        szBody=((Multipart)part.getContent()).getBodyPart(1).getContent().toString();
                    }
                }
            }
        }
        System.out.println("內容:" + szBody);
        out.println("<tr><td width='75%' height='215' valign='top'>" + szBody +"</td>");
        out.println("<td width='25%' bgcolor='#F0F0F0' valign='top'><p align='center'><b>附件</b></p>");
        out.println("<p>"+ szAttach +"</p></td>");
        out.println("</tr><table>");    //Close connection
        folder.close(false);  //folder.close(true); //如果要刪除有DELETE標記的郵件,需設置true
        store.close();
    }
    catch(javax.mail.MessagingException  e){
        System.out.println(e.getMessage());
        return ;
    }
    %>
      

  2.   

    整個收發郵件下載地址 http://211.147.240.22/upload/000/webmail.zip
    包含整個webmail project