<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 28, comments - 27, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Socket收發郵件--SMTP和POP3

    Posted on 2006-09-18 15:11 小小涼粉 閱讀(2644) 評論(5)  編輯  收藏 所屬分類: JavaSE
    SMTP的連接和收發過程

    a.建立TCP連接。
    b.客戶端發送HELO命令以標識發件人自己的身份,然后客戶端發送MAIL命令服務器端正希望以OK作為響應,表明準備接收。
    c.客戶端發送RCPT命令,以標識該電子郵件的計劃接收人,可以有多個RCPT行
    d.協商結束,發送郵件,用命令DATA發送
    e.以.表示結束輸入內容一起發送出去
    f.結束此次發送,用QUIT命令退出。

    SMTP的基本命令集

    HELO   向服務器標識用戶身份
    MAIL   初始化郵件傳輸mail from:
    RCPT   標識單個的郵件接收人;常在MAIL命令后面可有多個rcpt to:
    DATA   在單個或多個RCPT命令后,表示所有的郵件接收人已標識,初始化數據傳輸,以.結束。
    NOOP   無操作,服務器應響應OK
    RSET   重置會話,當前傳輸被取消
    QUIT   結束會話


    POP3簡介

    在POP3協議中有三種狀態,認可狀態,處理狀態,和更新狀態。當客戶機與服務器建立聯系時,一旦客戶機提供了自己身份并成功確認,即由認可狀態轉入處理狀態,在完成相應的操作后客戶機發出quit命令,則進入更新狀態,更新之后最后重返認可狀態。

    POP3基本命令集
    USER username
    PASS password   
    STAT  請求服務器發回關于郵箱的統計資料,如郵件總數和總字節數
    LIST  返回郵件數量和每個郵件的大小
    RETR [Msg#] 返回由參數標識的郵件的全部文本
    DELE [Msg#] 服務器將由參數標識的郵件標記為刪除,由quit命令執行
    RSET 服務器將重置所有標記為刪除的郵件,用于撤消DELE命令
    NOOP 服務器返回一個肯定的響應
    QUIT 更新


    class POP3Demo {
    ?? private static String POP3Server = "pop.126.com";
    ??? private static String USERNAME = "username";//實際應用中改成真實的用戶名
    ??? private static String PASSWORD = "password";//實際應用中改成真實的密碼
    ??? public static void main(String[] args) {
    ??????? int POP3Port = 110;
    ??????? Socket client = null;
    ??????? try {
    ??????????? // 向POP3服務程序建立一個套接字連接。
    ??????????? client = new Socket(POP3Demo.POP3Server, POP3Port);
    ??????????? // 創建一個BufferedReader對象,以便從套接字讀取輸出。
    ??????????? InputStream is = client.getInputStream();
    ??????????? BufferedReader sockin = new BufferedReader(new InputStreamReader(is));
    ??????????? // 創建一個PrintWriter對象,以便向套接字寫入內容。
    ??????????? OutputStream os = client.getOutputStream();
    ??????????? PrintWriter sockout = new PrintWriter(os, true);
    ??????????? // 顯示同SMTP服務程序的握手過程。
    ??????????? System.out.println("S:" + sockin.readLine());
    ??????????? sockout.println("user " + POP3Demo.USERNAME);
    ??????????? System.out.println("S:" + sockin.readLine());
    ??????????? sockout.println("pass " + POP3Demo.PASSWORD);
    ??????????? System.out.println("S:" + sockin.readLine());
    ??????????? sockout.println("stat");
    ??????????? String temp[] = sockin.readLine().split(" ");
    ??????????? int count = Integer.parseInt(temp[1]);//得到信箱中共有多少封郵件
    ??????????? for (int i = 1; i < count + 1; i++) {//依次打印出郵件的內容
    ??????????????? sockout.println("retr " + i);
    ??????????????? System.out.println("以下為第" + i + "封郵件的內容");
    ??????????????? while (true) {
    ??????????????????? String reply = sockin.readLine();
    ??????????????????? System.out.println(reply);
    ??????????????????? if (reply.toLowerCase().equals(".")) {
    ??????????????????????? break;
    ??????????????????? }
    ??????????????? }
    ??????????? }

    ??????? } catch (IOException e) {
    ??????????? System.out.println(e.toString());
    ??????? } finally {
    ??????????? try {
    ??????????????? if (client != null) {
    ??????????????????? client.close();
    ??????????????? }
    ??????????? } catch (IOException e) {}
    ??????? }
    ??? }
    }

    ?class SMTPDemo {
    ??? //以下三項請在使用時改成真實的信箱地址
    ??? //并且注意,SMTPServer和receiver必須是同一個服務器
    ??? private static String sender = "sender";
    ??? private static String receiver = "receiver";
    ??? private static String SMTPServer = "smtpserver";
    ??? public static void main(String[] args) {
    ??????? int SMTPPort = 25;
    ??????? Socket client = null;
    ??????? try {
    ??????????? // 向SMTP服務程序建立一個套接字連接。
    ??????????? client = new Socket(SMTPDemo.SMTPServer, SMTPPort);
    ??????????? // 創建一個BufferedReader對象,以便從套接字讀取輸出。
    ??????????? InputStream is = client.getInputStream();
    ??????????? BufferedReader sockin = new BufferedReader(new InputStreamReader(is));
    ??????????? // 創建一個PrintWriter對象,以便向套接字寫入內容。
    ??????????? OutputStream os = client.getOutputStream();
    ??????????? PrintWriter sockout = new PrintWriter(os, true);
    ??????????? // 顯示同SMTP服務程序的握手過程。
    ??????????? System.out.println("S:" + sockin.readLine());
    ??????????? sockout.println("helo");
    ??????????? System.out.println("S:" + sockin.readLine());
    ??????????? sockout.println("mail from: " + "<" + SMTPDemo.sender + ">");
    ??????????? System.out.println("S:" + sockin.readLine());
    ??????????? sockout.println("rcpt to: " + "<" + SMTPDemo.receiver + ">");
    ??????????? System.out.println("S:" + sockin.readLine());
    ??????????? sockout.println("data");
    ??????????? //發送郵件標題
    ??????????? sockout.println("subject: 你好");
    ??????????? //發送郵件內容
    ??????????? sockout.println("ni hao");
    ??????????? sockout.println("wo shi li jian");
    ??????????? //此處的.為特殊標記,表示郵件結束
    ??????????? sockout.println(".");
    ??????????? sockout.println("rset");
    ??????????? sockout.println("quit");
    ??????? } catch (IOException e) {
    ??????????? System.out.println(e.toString());
    ??????? } finally {
    ??????????? try {
    ??????????????? if (client != null) {
    ??????????????????? client.close();
    ??????????????? }
    ??????????? } catch (IOException e) {}
    ??????? }
    ??? }
    }



    評論

    # re: Socket收發郵件--SMTP和POP3  回復  更多評論   

    2006-09-19 09:16 by stoneshao
    收郵件比較容易,難點是對收到的郵件進行解析,而解析的難點是編碼問題,樓主可不可以針對這方面寫點內容啊?

    # re: Socket收發郵件--SMTP和POP3  回復  更多評論   

    2006-09-19 09:32 by 小小涼粉
    汗……

    偶這篇文章只是幫一個國外的哥們作Java作業用的

    編碼這方面我也沒有仔細研究過.....

    看看最近有沒有時間吧

    # re: Socket收發郵件--SMTP和POP3  回復  更多評論   

    2007-01-18 21:56 by 你好
    呵呵, 樓主同時也幫了偶個大忙, 偶也是在國外, 也是這個java作業
    用smtp 和pop3 收發電子郵件,

    十分感謝!!!!!~~~~~~~~

    # re: Socket收發郵件--SMTP和POP3  回復  更多評論   

    2007-01-18 22:19 by 小小涼粉
    不客氣,請支持我的新博客:dearwolf.javaeye.com吧:)

    # re: Socket收發郵件--SMTP和POP3  回復  更多評論   

    2007-04-04 16:01 by 行風
    樓主啊有沒有程序啊我門做畢業設計做郵件系的啊
    幫幫忙啊

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


    網站導航:
     
    主站蜘蛛池模板: 日本免费在线中文字幕| 亚洲日本中文字幕天天更新| 国产精品亚洲mnbav网站| 国产jizzjizz视频免费看| 午夜a级成人免费毛片| 成人毛片免费观看视频在线| 99久久免费国产精品特黄| 好男人www免费高清视频在线| 亚洲精品免费网站| 在线观看视频免费完整版| 最新仑乱免费视频| 在线免费观看一区二区三区| 精品剧情v国产在免费线观看 | 亚洲婷婷第一狠人综合精品| 亚洲一卡2卡4卡5卡6卡残暴在线| 亚洲成人免费网址| 在线综合亚洲欧洲综合网站| 亚洲国产成人手机在线观看| 黄网站色成年片大免费高清| 国产日韩AV免费无码一区二区三区| 国产免费拔擦拔擦8X高清在线人| 免费无码VA一区二区三区| 麻豆一区二区免费播放网站| 韩国日本好看电影免费看| 亚洲国产一级在线观看| 亚洲成a人片在线观看日本| 亚洲人成在线观看| 亚洲最大成人网色香蕉| 男人的天堂av亚洲一区2区| 无码人妻一区二区三区免费视频 | 亚洲男人的天堂网站| 国产亚洲精彩视频| 一级做a爰片久久免费| 99爱免费观看视频在线| 97无码免费人妻超级碰碰夜夜| 免费国产一级特黄久久| 亚洲av无码专区在线播放| 亚洲国产精品成人综合色在线婷婷| 亚洲AV无码国产一区二区三区| 中文字幕永久免费| 18禁网站免费无遮挡无码中文|