posts - 70,comments - 408,trackbacks - 0
          看過在jsp中調用javamail后發現里面只有發郵件,沒有收看郵件,且在收看郵件時有個很麻煩的內碼轉換問題,所以寫這篇文章出來給大家看看。如有錯誤請寫信給我。
          使用Java Mail API的方法,主要的操作過程為:
          ● 獲取javax.mail.Session實例,并進而獲得javax.mail.Store實例。
          ● 利用javax.mail.Store實例獲得缺省收件箱(INBOX)javax.mail.Folder實例。
          ● 使用javax.mail.Folder對象提取新郵件,存儲為javax.mail.Message對象數組。
          ● 創建javax.mail.FetchProfile以(潛在地)優化對特定郵件組成成分的提取。
          這里的javax.mail.FetchProfile類提供郵件協議提供者可選參數,其目的是更有效地實現郵件組成成分的預提取。
          一個例子:
          <%@ page language="java" contentType="text/html;charset=gb2312" %>
          <%@ page import="java.util.*,java.io.*,java.text.*" %>
          <%@ page import="javax.mail.*,javax.mail.internet.*,javax.activation.*" %>
          <%!
          private String getDisplayAddress(Address a) //轉換RFC822為Unicode
          { String pers = null;
          String addr = null;
          if(a instanceof InternetAddress &&((pers=((InternetAddress)a).getPersonal())!=null))
          addr=pers+" "+"<"+((InternetAddress)a).getAddress()+">";

          else
          addr = a.toString();
          return addr;
          }
          %>
          <%
          Session mailsession=Session.getInstance(System.getProperties(),null);
          mailsession.setDebug(false);
          Store store=mailsession.getStore(protocol);//protocol為連接協議,IMAP或是POP
          store.connect(mailhost,-1,user,passwd);//mailhost主機,user為用戶名,passwd為密碼
          Folder folder = store.getFolder("INBOX");
          try
          { folder.open(Folder.READ_WRITE);}
          catch (MessagingException ex)
          { folder.open(Folder.READ_ONLY);}
          Message message[]=folder.getMessages();
          FetchProfile fp=new FetchProfile();
          fp.add(FetchProfile.Item.ENVELOPE);
          fp.add(FetchProfile.Item.FLAGS);
          fp.add("X-Mailer");
          folder.fetch(message,fp);
          int id=0,j=0;
          for(int i=0;i<request.getParameter("id").length();i++)//假設要閱讀第ID個郵件。
          id=id*10+(request.getParameter("id").charAt(i)-48);
          for(j=0;j<id;j++);
          message[j].setFlag(Flags.Flag.SEEN,true);
          out.println("<table width=\"550\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" borderColorDark=\"#eaf0ff\" borderColorLight=\"#000000\" align=\"center\">");
          out.println("<tr>");
          out.println("<td width=60>主題:</td><td width=490> "+message[j].getSubject()+" </td></tr>");
          String from=new String();
          Address[] fr=message[j].getFrom();
          if(fr!=null)
          { boolean tf=true;
          for(int i=0;i<fr.length;i++)
          from=from+getDisplayAddress(fr);
          }
          out.println("<tr><td width=60>來自:</td><td width=490> "+from+" </td></tr>");
          out.println("<tr><td colspan=\"2\"> <div align=\"center\"><b>內容</b></div><br>");
          Object o=message[j].getContent();
          if (message[j].isMimeType("text/plain")) //若其Type為tex/plain就可直接讀出了。
          out.println((String)o+"</td>");
          else if(message[j].isMimeType("multipart/*"))
          { Multipart mp=(Multipart)o;
          Part part=mp.getBodyPart(0);
          String msg=(String)part.getContent();
          StringBuffer buf=new StringBuffer(msg.length()+6);
          char ch=' ';
          for(int i=0;i<msg.length();i++)//若遇到換行就轉為<br>
          { ch=msg.charAt(i);
          if(ch=='\n')buf.append("<br>");
          else buf.append(ch);
          }
          out.println(buf.toString());
          }
          else
          out.println("現在還無法顯示:"+message[j].getContentType());
          out.println("</tr>");
          out.println("<table>");
          folder.close(true);
          store.close();
          %>
          在Folder對象中可以用getMessageCount()和getUnreadMessageCount()方法來取得總共有多少封信和共有多少封信未讀。
          posted on 2006-04-12 13:38 我心依舊 閱讀(916) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 耿马| 封丘县| 靖宇县| 营山县| 滨州市| 额尔古纳市| 汨罗市| 仙居县| 新闻| 台州市| 许昌县| 志丹县| 汉沽区| 象山县| 会昌县| 周口市| 江油市| 富宁县| 崇信县| 石楼县| 老河口市| 香港| 大城县| 手游| 城市| 文山县| 灌阳县| 淅川县| 南陵县| 抚顺县| 房产| 东安县| 交口县| 乌恰县| 兖州市| 榆林市| 海林市| 浦北县| 蒲城县| 金山区| 卫辉市|