国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.NET下的POP3編程

2024-07-10 13:00:18
字體:
來源:轉載
供稿:網友
  • 本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。
  • 前一段時間在論壇上看見有人問如何使用.net進行pop3編程,其實pop3的使用很簡單,所以.net沒有向smtp那樣給出相應的類來控制.

    廢話少說,程序員最需要的使代碼,:)!

    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協議你還可以直接telnet 到郵件服務器上去收信。

      一般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




    <c#網絡應用編程>



    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 嘉峪关市| 永吉县| 融水| 北票市| 南雄市| 沅江市| 峨眉山市| 星子县| 余干县| 满洲里市| 黔东| 新竹市| 金湖县| 年辖:市辖区| 澎湖县| 库尔勒市| 运城市| 元江| 拉萨市| 丘北县| 中方县| 长武县| 东山县| 上林县| 英德市| 福建省| 广平县| 增城市| 西贡区| 徐水县| 德安县| 宁国市| 岳阳市| 峨山| 荥经县| 黔西县| 石景山区| 灵川县| 日土县| 珲春市| 镇原县|