<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 行風
    樓主啊有沒有程序啊我門做畢業設計做郵件系的啊
    幫幫忙啊

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲AV无码不卡在线观看下载| 色播精品免费小视频| 人人狠狠综合久久亚洲高清| 久久久久精品国产亚洲AV无码| 日本片免费观看一区二区| 亚洲精品国产情侣av在线| 亚洲人成免费网站| 亚洲AV无码久久久久网站蜜桃| 84pao国产成视频免费播放| 亚洲理论片在线观看| 可以免费看黄的网站| 亚洲а∨精品天堂在线| 亚洲成年人啊啊aa在线观看| 深夜免费在线视频| 久久精品国产精品亚洲艾草网| 午夜精品射精入后重之免费观看 | 国产性生大片免费观看性| 亚洲无线码在线一区观看| 日韩精品免费视频| 亚洲最大成人网色香蕉| 日韩免费一区二区三区| jizz免费一区二区三区| 亚洲AV无码成人网站久久精品大 | 亚洲AV无码资源在线观看| 四虎亚洲国产成人久久精品| 岛国精品一区免费视频在线观看| 亚洲高清视频在线观看| 欧美在线看片A免费观看| 免费的黄网站男人的天堂 | 亚洲精品白浆高清久久久久久| 久久永久免费人妻精品| 涩涩色中文综合亚洲| 久久影视国产亚洲| 在线观看H网址免费入口| 色婷婷亚洲一区二区三区| 亚洲综合图色40p| 99热在线精品免费全部my| 一边摸一边爽一边叫床免费视频 | 亚洲国产精品网站久久| 国产乱弄免费视频| 欧洲精品99毛片免费高清观看|