• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Visual C#編寫實現POP3的程序

    發表于:2007-05-25來源:作者:點擊數: 標簽:程序POP3打開visual實現
    1.打開VS.NET 2003. 2.新建一個WinForm Application. 3.添加命名空間 using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System. Windows .Forms; using System.Data; using System.Net; using System.Net
      1.打開VS.NET 2003.

      2.新建一個WinForm Application.



      3.添加命名空間

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    using System.IO;

      4.主要代碼

      為了防止界面在連接服務器時死鎖,我另開了一個線程

    private void button1_Click(object sender, System.EventArgs e)
    {
     Thread myThread=new Thread(new ThreadStart(TreadGet));
     myThread.Start();
    }

    private void TreadGet()
    {
     ConnectToServer();
     LogonServer();
     GetEmailList();
    }

    //連接服務器
    private void ConnectToServer()
    {
     this.myClient=new TcpClient();
     try
     {
      this.myClient.Connect(this.serverNameTextBox.Text,110);
      this.messageListBox.Items.Add("連接服務器成功");
      //初始化網絡流,數據就是通過這個對象讀出來的
      ns=this.myClient.GetStream();
      sr=new StreamReader(ns);
      sw=new StreamWriter(ns);
     }
     catch(Exception ex)
     {
      this.messageListBox.Items.Add(ex.Message);
     }
    }
    //驗證用戶名,密碼
    private void LogonServer()
    {
     result=sr.ReadLine();
     this.messageListBox.Items.Add(result);
     sw.WriteLine("USER "+this.nameTextBox.Text);
     sw.Flush();

     result=sr.ReadLine();
     if(result.Substring(0,3)=="-ER")
     {
      this.messageListBox.Items.Add("沒有這個用戶名");
      return;
     }

     sw.WriteLine("PASS "+this.passTextBox.Text);
     sw.Flush();

     try
     {
      result=sr.ReadLine();
     }
     catch(IOException ioex)
     {
      this.messageListBox.Items.Add(ioex.Message);
      return;
     }

     if(result.Substring(0,4)=="-ERR")
     {
      this.messageListBox.Items.Add("無法登錄,可能使用戶名密碼錯誤!");
      return;
     }

     this.messageListBox.Items.Add("登錄成功");
     
    }

    //獲取郵件列表
    private void GetEmailList()
    {
     string from=null;
     string subject=null;
     sw.WriteLine("stat");
     sw.Flush();

     result=sr.ReadLine();
     // MessageBox.Show(result);
     string[] nummessage=result.Split(' ');
     int totalnum=Convert.ToInt32(nummessage[1]);
     if(totalnum>0)
      this.messageListBox.Items.Add("你有"+totalnum.ToString()+"郵件");
     else
      this.messageListBox.Items.Add("郵箱里沒有郵件");

     for(int i=1;i<=totalnum;i++)
     {
      sw.WriteLine("top "+i.ToString()+" 0");
      sw.Flush();
      result=sr.ReadLine();

      while(true)
      {
       result=sr.ReadLine();
       if(result==".")
        break;
       if(result.Length>4)
       {
        if(result.Substring(0,5)=="From:")
         from=result ;
        if(result.Substring(0,8)=="Subject:")
         subject=result ;

       }
      }
      this.listBox1 .Items.Add(i.ToString()+" "+from+ " "+ subject);
     }
    }

    private void button2_Click(object sender, System.EventArgs e)
    {
     this.listBox1.Items.Clear();
    }

      參考資料

      網絡郵件收取使用的是Pop3協議,了解Pop3協議有助于我們加深對郵件系統的理解。而且使用Pop3協議你還可以直接te.net 到郵件服務器上去收信。

      一般telnet Pop3 Server 110后就可以用這些命令了,大小寫不敏感, 不包括口令本身,注意不要讓口令回顯,等驗證通過后再允許回顯好了。

      user username 用戶認可

      pass password 認可 執行成功則狀態轉換

      apop name,digest 認可一種安全傳輸口令的辦法,執行成功導致狀態轉換,請參見RFC 1321 。

      stat 處理請求server回送郵箱統計資料,如郵件數、 郵件總字節數

      uidl n 處理 server返回用于該指定郵件的唯一標識, 如果沒有指定,返回所有的。

      list n 處理 server返回指定郵件的大小等

      retr n 處理 server返回郵件的全部文本

      dele n 處理 server標記刪除,quit命令執行時才真正刪除

      rset 處理撤消所有的dele命令

      top n,m 處理 返回n號郵件的前m行內容,m必須是自然數

      noop 處理 server返回一個肯定的響應

      quit client 希望結束會話。如果server處于"處理" 狀態,則現在進入"更新"狀態,刪除那些標記成刪除的郵件。如果server處于"認可"狀態, 則結束會話時server不進入"更新"狀態 。

      使用telnet 的一個完整的收信例子如下:

      telnet pop3Server 110
      user username
      pass ****
      stat
      list
      retr 1
      retr 2
      ...
      dele 1
      dele 2
      ...
      quit


    原文轉自:http://www.kjueaiud.com

    評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>