饒榮慶 -- 您今天UCWEB了嗎?--http://www.ucweb.com

          3G 手機(jī)開(kāi)發(fā)網(wǎng)

             :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            99 Posts :: 1 Stories :: 219 Comments :: 0 Trackbacks
          關(guān)鍵字: 企業(yè)應(yīng)用 ? ????
          ????? 兄弟我理論性的東西說(shuō)不出來(lái),不過(guò)實(shí)際運(yùn)用咱還是有辦法的
          前幾天由于工作需要,想了解下關(guān)于支持ssl的郵件收發(fā),按照以前普通的做法是行不通的,所以就上網(wǎng)東找找,西瞧瞧。發(fā)現(xiàn)了個(gè)好東西,并且實(shí)驗(yàn)成功。
          ????? 那天本想來(lái)javaeye看看有沒(méi)有人有相關(guān)的經(jīng)驗(yàn),找了老半天,連個(gè)屁也沒(méi)聞到,我就說(shuō)我們,我們這些做程序員的不能老是吹吹水,談?wù)劦览恚覀兊媚贸鳇c(diǎn)實(shí)際的東西出來(lái),就想fins一樣,我就很佩服他的貢獻(xiàn)精神。
          ????? 不說(shuō)廢話了,看看源代碼,大家有空也可以實(shí)驗(yàn)下。還真有用
          package?org.job.six;

          ?
          import?java.io.UnsupportedEncodingException;
          import?java.security.Security;
          import?java.util.Properties;

          import?javax.mail.FetchProfile;
          import?javax.mail.Folder;
          import?javax.mail.Message;
          import?javax.mail.Session;
          import?javax.mail.Store;
          import?javax.mail.URLName;
          import?javax.mail.internet.InternetAddress;
          import?javax.mail.internet.MimeUtility;

          import?org.job.util.Logger;
          import?org.job.util.mail.ApplicationContext;

          /**
          ?*?用于收取Gmail郵件
          ?*?
          ?*?
          @author?wuhua
          ?
          */
          public?class?GmailFetch?{
          ????
          private?static?Logger?logger?=?Logger.getLogger(GmailFetch.class);
          ????
          public?static?void?main(String?argv[])?throws?Exception?{
          ????????logger.debug(
          "開(kāi)始讀取郵件");
          ????????Security.addProvider(
          new?com.sun.net.ssl.internal.ssl.Provider());
          ????????
          final?String?SSL_FACTORY?=?"javax.net.ssl.SSLSocketFactory";

          ????????
          //?Get?a?Properties?object
          ????????Properties?props?=?System.getProperties();
          ????????props.setProperty(
          "mail.pop3.socketFactory.class",?SSL_FACTORY);
          ????????props.setProperty(
          "mail.pop3.socketFactory.fallback",?"false");
          ????????props.setProperty(
          "mail.pop3.port",?"995");
          ????????props.setProperty(
          "mail.pop3.socketFactory.port",?"995");

          ????????
          //?以下步驟跟一般的JavaMail操作相同
          ????????Session?session?=?Session.getDefaultInstance(props,?null);

          ????????
          //?請(qǐng)將紅色部分對(duì)應(yīng)替換成你的郵箱帳號(hào)和密碼
          ????????URLName?urln?=?new?URLName("pop3",?ApplicationContext.POP3,?995,?null,
          ????????????????ApplicationContext.GMAIL_MAIL_NAME,
          ????????????????ApplicationContext.GMAIL_MAIL_PASSWORD);
          ????????Store?store?
          =?session.getStore(urln);
          ????????Folder?inbox?
          =?null;
          ????????
          try?{
          ????????????store.connect();
          ????????????inbox?
          =?store.getFolder("INBOX");
          ????????????inbox.open(Folder.READ_ONLY);
          ????????????FetchProfile?profile?
          =?new?FetchProfile();
          ????????????profile.add(FetchProfile.Item.ENVELOPE);
          ????????????Message[]?messages?
          =?inbox.getMessages();
          ????????????inbox.fetch(messages,?profile);
          ????????????logger.debug(
          "收件箱的郵件數(shù):"?+?messages.length);
          ????????????
          for?(int?i?=?0;?i?<?messages.length;?i++)?{
          ????????????????
          //?郵件發(fā)送者
          ????????????????String?from?=?decodeText(messages[i].getFrom()[0].toString());
          ????????????????InternetAddress?ia?
          =?new?InternetAddress(from);
          ????????????????logger.debug(
          "發(fā)信人:"?+?ia.getPersonal()?+?'('
          ????????????????????????
          +?ia.getAddress()?+?')');
          ????????????????
          //?郵件標(biāo)題
          ????????????????logger.debug("主題:"?+?messages[i].getSubject());
          ????????????????
          //?郵件大小
          ????????????????logger.debug("郵件大小:"?+?messages[i].getSize());
          ????????????????
          //?郵件發(fā)送時(shí)間
          ????????????????logger.debug("發(fā)送日期:"?+?messages[i].getSentDate());
          ????????????}
          ????????}?
          finally?{
          ????????????
          try?{
          ????????????????inbox.close(
          false);
          ????????????}?
          catch?(Exception?e)?{
          ????????????}
          ????????????
          try?{
          ????????????????store.close();
          ????????????}?
          catch?(Exception?e)?{
          ????????????}
          ????????}
          ????????
          ????????logger.debug(
          "讀取郵件完畢");
          ????}

          ????
          protected?static?String?decodeText(String?text)
          ????????????
          throws?UnsupportedEncodingException?{
          ????????
          if?(text?==?null)
          ????????????
          return?null;
          ????????
          if?(text.startsWith("=?GB")?||?text.startsWith("=?gb"))
          ????????????text?
          =?MimeUtility.decodeText(text);
          ????????
          else
          ????????????text?
          =?new?String(text.getBytes("ISO8859_1"));
          ????????
          return?text;
          ????}

          }
          package?org.job.six;

          ?
          import?java.io.UnsupportedEncodingException;
          import?java.security.Security;
          import?java.util.Properties;

          import?javax.mail.FetchProfile;
          import?javax.mail.Folder;
          import?javax.mail.Message;
          import?javax.mail.Session;
          import?javax.mail.Store;
          import?javax.mail.URLName;
          import?javax.mail.internet.InternetAddress;
          import?javax.mail.internet.MimeUtility;

          import?org.job.util.Logger;
          import?org.job.util.mail.ApplicationContext;

          /**
          ?*?用于收取Gmail郵件
          ?*?
          ?*?
          @author?wuhua
          ?
          */
          public?class?GmailFetch?{
          ????
          private?static?Logger?logger?=?Logger.getLogger(GmailFetch.class);
          ????
          public?static?void?main(String?argv[])?throws?Exception?{
          ????????logger.debug(
          "開(kāi)始讀取郵件");
          ????????Security.addProvider(
          new?com.sun.net.ssl.internal.ssl.Provider());
          ????????
          final?String?SSL_FACTORY?=?"javax.net.ssl.SSLSocketFactory";

          ????????
          //?Get?a?Properties?object
          ????????Properties?props?=?System.getProperties();
          ????????props.setProperty(
          "mail.pop3.socketFactory.class",?SSL_FACTORY);
          ????????props.setProperty(
          "mail.pop3.socketFactory.fallback",?"false");
          ????????props.setProperty(
          "mail.pop3.port",?"995");
          ????????props.setProperty(
          "mail.pop3.socketFactory.port",?"995");

          ????????
          //?以下步驟跟一般的JavaMail操作相同
          ????????Session?session?=?Session.getDefaultInstance(props,?null);

          ????????
          //?請(qǐng)將紅色部分對(duì)應(yīng)替換成你的郵箱帳號(hào)和密碼
          ????????URLName?urln?=?new?URLName("pop3",?ApplicationContext.POP3,?995,?null,
          ????????????????ApplicationContext.GMAIL_MAIL_NAME,
          ????????????????ApplicationContext.GMAIL_MAIL_PASSWORD);
          ????????Store?store?
          =?session.getStore(urln);
          ????????Folder?inbox?
          =?null;
          ????????
          try?{
          ????????????store.connect();
          ????????????inbox?
          =?store.getFolder("INBOX");
          ????????????inbox.open(Folder.READ_ONLY);
          ????????????FetchProfile?profile?
          =?new?FetchProfile();
          ????????????profile.add(FetchProfile.Item.ENVELOPE);
          ????????????Message[]?messages?
          =?inbox.getMessages();
          ????????????inbox.fetch(messages,?profile);
          ????????????logger.debug(
          "收件箱的郵件數(shù):"?+?messages.length);
          ????????????
          for?(int?i?=?0;?i?<?messages.length;?i++)?{
          ????????????????
          //?郵件發(fā)送者
          ????????????????String?from?=?decodeText(messages[i].getFrom()[0].toString());
          ????????????????InternetAddress?ia?
          =?new?InternetAddress(from);
          ????????????????logger.debug(
          "發(fā)信人:"?+?ia.getPersonal()?+?'('
          ????????????????????????
          +?ia.getAddress()?+?')');
          ????????????????
          //?郵件標(biāo)題
          ????????????????logger.debug("主題:"?+?messages[i].getSubject());
          ????????????????
          //?郵件大小
          ????????????????logger.debug("郵件大小:"?+?messages[i].getSize());
          ????????????????
          //?郵件發(fā)送時(shí)間
          ????????????????logger.debug("發(fā)送日期:"?+?messages[i].getSentDate());
          ????????????}
          ????????}?
          finally?{
          ????????????
          try?{
          ????????????????inbox.close(
          false);
          ????????????}?
          catch?(Exception?e)?{
          ????????????}
          ????????????
          try?{
          ????????????????store.close();
          ????????????}?
          catch?(Exception?e)?{
          ????????????}
          ????????}
          ????????
          ????????logger.debug(
          "讀取郵件完畢");
          ????}

          ????
          protected?static?String?decodeText(String?text)
          ????????????
          throws?UnsupportedEncodingException?{
          ????????
          if?(text?==?null)
          ????????????
          return?null;
          ????????
          if?(text.startsWith("=?GB")?||?text.startsWith("=?gb"))
          ????????????text?
          =?MimeUtility.decodeText(text);
          ????????
          else
          ????????????text?
          =?new?String(text.getBytes("ISO8859_1"));
          ????????
          return?text;
          ????}

          }


          上面代碼,完全可以封裝成一個(gè)收取ssl郵件的庫(kù)
          改天有時(shí)間整理下關(guān)于發(fā)郵件的方法

          爬蟲(chóng)工作室 -- 專(zhuān)業(yè)的手機(jī)軟件開(kāi)發(fā)工作室
          3G視線 -- 專(zhuān)注手機(jī)軟件開(kāi)發(fā)
          posted on 2007-03-30 14:36 3G工作室 閱讀(4743) 評(píng)論(9)  編輯  收藏 所屬分類(lèi): j2ee

          Feedback

          # re: 一個(gè)讀取Gmail郵件的簡(jiǎn)單程序 2007-03-30 14:44 王彥鋒的技術(shù)實(shí)踐
          呵呵,感謝你的貢獻(xiàn)精神!  回復(fù)  更多評(píng)論
            

          # re: 一個(gè)讀取Gmail郵件的簡(jiǎn)單程序 2007-03-30 15:00 爬蟲(chóng)工作室
          恭喜是應(yīng)該
          寫(xiě)程序最重要的是貢獻(xiàn)我們的思路跟思想
          當(dāng)然實(shí)現(xiàn)上面的那些東西就是代碼片段  回復(fù)  更多評(píng)論
            

          # re: 一個(gè)讀取Gmail郵件的簡(jiǎn)單程序 2007-03-30 15:12 BeanSoft
          這個(gè)程序可以簡(jiǎn)單概括為:
          JavaMail 用 SSL 連接收取 POP3 郵件.
          謝謝分享!
          核心代碼(值得收藏的地方):
          Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
          final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

          // Get a Properties object
          Properties props = System.getProperties();
          props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
          props.setProperty("mail.pop3.socketFactory.fallback", "false");
          props.setProperty("mail.pop3.port", "995");
          props.setProperty("mail.pop3.socketFactory.port", "995");

          // 以下步驟跟一般的JavaMail操作相同
          Session session = Session.getDefaultInstance(props, null);  回復(fù)  更多評(píng)論
            

          # re: 一個(gè)讀取Gmail郵件的簡(jiǎn)單程序 2007-03-30 16:14 爬蟲(chóng)工作室
          還是老兄您厲害  回復(fù)  更多評(píng)論
            

          # re: 一個(gè)讀取Gmail郵件的簡(jiǎn)單程序 2007-03-30 19:17 java 新手
          感謝,非常有用!  回復(fù)  更多評(píng)論
            

          # re: 一個(gè)讀取Gmail郵件的簡(jiǎn)單程序[未登錄](méi) 2007-04-02 10:51 54powerman
          // 請(qǐng)將紅色部分對(duì)應(yīng)替換成你的郵箱帳號(hào)和密碼


          紅色部分,好紅啊!!!  回復(fù)  更多評(píng)論
            

          # re: 一個(gè)讀取Gmail郵件的簡(jiǎn)單程序 2007-04-03 09:02 爬蟲(chóng)工作室
          因?yàn)榇a也是從網(wǎng)上那里獲取點(diǎn),這里修改下,所以。。。。。。。  回復(fù)  更多評(píng)論
            

          # re: 一個(gè)讀取Gmail郵件的簡(jiǎn)單程序[未登錄](méi) 2010-12-28 16:20 yin
          兄弟,有沒(méi)源程序,幫忙發(fā)下 ,329327140@qq.com.謝了  回復(fù)  更多評(píng)論
            

          # re: 一個(gè)讀取Gmail郵件的簡(jiǎn)單程序[未登錄](méi) 2011-09-30 09:55 yang
          能不能注解一下,有些參數(shù)不知道怎么樣寫(xiě)

            回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 高阳县| 辽宁省| 遵义市| 海盐县| 清原| 佛教| 馆陶县| 亚东县| 嘉鱼县| 怀宁县| 清苑县| 夹江县| 万安县| 江华| 卢氏县| 保定市| 桂林市| 平湖市| 宁蒗| 郧西县| 青海省| 庄河市| 孝感市| 都江堰市| 晋中市| 常山县| 中山市| 凤翔县| 东城区| 东乌珠穆沁旗| 育儿| 满洲里市| 禹州市| 石门县| 青川县| 云浮市| 长沙县| 嘉祥县| 五大连池市| 凤凰县| 鄂托克前旗|