posts - 70,comments - 408,trackbacks - 0
          看過(guò)在jsp中調(diào)用javamail后發(fā)現(xiàn)里面只有發(fā)郵件,沒有收看郵件,且在收看郵件時(shí)有個(gè)很麻煩的內(nèi)碼轉(zhuǎn)換問(wèn)題,所以寫這篇文章出來(lái)給大家看看。如有錯(cuò)誤請(qǐng)寫信給我。
          使用Java Mail API的方法,主要的操作過(guò)程為:
          ● 獲取javax.mail.Session實(shí)例,并進(jìn)而獲得javax.mail.Store實(shí)例。
          ● 利用javax.mail.Store實(shí)例獲得缺省收件箱(INBOX)javax.mail.Folder實(shí)例。
          ● 使用javax.mail.Folder對(duì)象提取新郵件,存儲(chǔ)為javax.mail.Message對(duì)象數(shù)組。
          ● 創(chuàng)建javax.mail.FetchProfile以(潛在地)優(yōu)化對(duì)特定郵件組成成分的提取。
          這里的javax.mail.FetchProfile類提供郵件協(xié)議提供者可選參數(shù),其目的是更有效地實(shí)現(xiàn)郵件組成成分的預(yù)提取。
          一個(gè)例子:
          <%@ 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) //轉(zhuǎn)換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為連接協(xié)議,IMAP或是POP
          store.connect(mailhost,-1,user,passwd);//mailhost主機(jī),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++)//假設(shè)要閱讀第ID個(gè)郵件。
          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>來(lái)自:</td><td width=490> "+from+" </td></tr>");
          out.println("<tr><td colspan=\"2\"> <div align=\"center\"><b>內(nèi)容</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++)//若遇到換行就轉(zhuǎn)為<br>
          { ch=msg.charAt(i);
          if(ch=='\n')buf.append("<br>");
          else buf.append(ch);
          }
          out.println(buf.toString());
          }
          else
          out.println("現(xiàn)在還無(wú)法顯示:"+message[j].getContentType());
          out.println("</tr>");
          out.println("<table>");
          folder.close(true);
          store.close();
          %>
          在Folder對(duì)象中可以用getMessageCount()和getUnreadMessageCount()方法來(lái)取得總共有多少封信和共有多少封信未讀。
          posted on 2006-04-12 13:38 我心依舊 閱讀(919) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 昭苏县| 乳山市| 蒙自县| 沂南县| 云安县| 大姚县| 清流县| 慈溪市| 久治县| 朝阳市| 肥西县| 隆尧县| 娄底市| 蓬安县| 驻马店市| 玉林市| 华亭县| 隆尧县| 娱乐| 万山特区| 疏附县| 南岸区| 黄山市| 仁化县| 揭西县| 固镇县| 安塞县| 荆州市| 福海县| 祁东县| 花莲市| 梓潼县| 芮城县| 大理市| 临泉县| 铜鼓县| 衡南县| 牟定县| 正定县| 东港市| 土默特右旗|