<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 小小涼粉 閱讀(2643) 評論(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 行風
    樓主啊有沒有程序啊我門做畢業設計做郵件系的啊
    幫幫忙啊

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


    網站導航:
     
    主站蜘蛛池模板: 免费一级做a爰片性色毛片| 欧美男同gv免费网站观看| www.亚洲色图| 精品国产亚洲一区二区三区在线观看| 18禁免费无码无遮挡不卡网站| 久久精品亚洲精品国产色婷| 久久99免费视频| 亚洲AV一宅男色影视| 一级毛片免费不卡在线| 久久亚洲精精品中文字幕| 久久精品无码专区免费青青| 久久亚洲精品无码VA大香大香| 性色午夜视频免费男人的天堂| 亚洲第一福利网站| 免费无码毛片一区二区APP| 亚洲春色另类小说| 男男AV纯肉无码免费播放无码| 亚洲中文字幕久久无码| 又大又硬又爽免费视频| 两性色午夜视频免费播放| 亚洲国产第一页www| 日本免费网址大全在线观看| 亚洲一区二区三区高清不卡 | 啦啦啦高清视频在线观看免费| 亚洲人成网站色7799| 免费a在线观看播放| a级毛片免费高清毛片视频| 亚洲男人天堂影院| 国产成人免费a在线资源| 国产精品偷伦视频免费观看了| 久久精品国产亚洲AV嫖农村妇女 | 亚洲色欲久久久综合网东京热| 日韩电影免费观看| 中文字幕亚洲男人的天堂网络| 成人亚洲网站www在线观看| 日本高清免费观看| 亚洲偷自拍另类图片二区| 激情97综合亚洲色婷婷五| 日本免费xxxx| 精精国产www视频在线观看免费| 亚洲国产精品久久久久婷婷软件|