天天看點

用 C++BUILDER 實作 POP3 電子郵件的接收

通過對 C++BUILDER 的元件設定,我們可以建立一個自己的POP3電子郵件接收程式。

一、建立一個工程檔案

二、建立一個新的表單,設定它的caption屬性為Getmail,在上面放置一個TpageControl控件,單擊右鍵建立三個TabSheet(1,2,3)。在TabSheet1上放置四個Edit(1,2,3,4)控件并清除它們的Text屬性及兩個Botton(1,2),其中Edit1用以輸入POP3伺服器的名稱;Edit2用以設定通路端口号,我們設定它為110,并将它的Text屬性設為110;Edit3用以輸入使用者名;Edit4用以輸入密碼。設Botton1的caption為“連接配接”,Botton2的caption為“斷開連接配接”。在TabSheet2上放置五個Edit(5,6,7,8,9)控件、兩個Memo控件和三個Botton(3,4,5),Edit5用來顯示郵件的編号;Edit6、Edit7、Edit8和Edit9分别用來顯示郵件的發送者、郵件的主題、大小及ID号;Memo1用來顯示郵件的正文;Memo2用來顯示郵件頭;Botton3、Botton4、Botton5的caption屬性分别設定為“删除”、“郵件”和“郵件資訊”。在TabSheet3上放置兩個Botton和一個Memo控件,其中Botton6的caption屬性為“郵件清單”;Botton7的caption為“清除清單”;Memo的用途自然為顯示郵件清單。在表單的底部放置一個StatusBar控件用以顯示工作狀态。最後,最重要的是在表單上放置一個NMPOP3控件,在這個程式裡,它是我們與POP3伺服器通訊的核心。

三、編寫代碼

為Botton1的OnClick事件編寫代碼:

NMPOP31->AttachFilePath = "."; //設定郵件的存儲目錄

NMPOP31->DeleteOnRead = false; //讀完郵件後是否删除

NMPOP31->ReportLevel = Status_Basic; //控制OnStatus事件和Status屬性報告的資料的數量

NMPOP31->TimeOut = 20000; //設定逾時的時間

NMPOP31->Host = Edit1->Text; //設定pop3伺服器的主機名

NMPOP31->Port = StrToInt(Edit2->Text); //設定pop3伺服器的端口号

NMPOP31->UserID = Edit3->Text; //取得使用者名

NMPOP31->Password = Edit4->Text; //得到密碼

NMPOP31->Connect(); //開始連接配接

Label10->Caption = "# of Messages: "+IntToStr(NMPOP31->MailCount); //顯示郵件的數量

為Botton2的OnClick事件編寫代碼:

NMPOP31->Disconnect(); //使之能夠與伺服器斷開連接配接

為Botton3的OnClick事件編寫代碼,當點選它時可以删除郵件:

NMPOP31->DeleteMailMessage(StrToInt(Edit5->Text));

為Botton4的OnClick事件編寫代碼,當點選它時顯示整個郵件:

NMPOP31->GetMailMessage(StrToInt(Edit5->Text));

Edit6->Text = NMPOP31->MailMessage->From; //通過MailMessage的From屬性得到發信人

Edit7->Text = NMPOP31->MailMessage->Subject; //通過MailMessage的Subjecet屬性得到主題

Edit9->Text = NMPOP31->MailMessage->MessageId; //通過MailMessage的MessageIds屬性得到Id

Memo2->Lines->Assign(NMPOP31->MailMessage->Head);

Memo1->Lines->Assign(NMPOP31->MailMessage->Body);

if (NMPOP31->MailMessage->Attachments->Text != "")

ShowMessage("Attachments:/n"+NMPOP31->MailMessage->Attachments->Text);

為Botton5的OnClick事件編寫代碼,點選它時将在Memo中顯示郵件的概要資訊:

NMPOP31->GetSummary(StrToInt(Edit5->Text));

Edit6->Text = NMPOP31->Summary->From;

Edit7->Text = NMPOP31->Summary->Subject;

Edit8->Text = IntToStr(NMPOP31->Summary->Bytes);

Edit9->Text = NMPOP31->Summary->MessageId;

為Botton6的OnClick事件編寫代碼,點選它時将在Memo3中顯示郵件清單:

NMPOP31->List(); //得到郵件的數量和大小的清單

為Botton7的OnClick事件編寫代碼,點選它時将清除Memo3中的郵件清單:

Memo3->Clear();

為NMPOP3的事件編寫代碼

1. 為它的OnConnect事件編寫代碼

StatusBar1->SimpleText = "Connected"; //連接配接後在狀态欄顯示已連接配接

2. 為它的OnConnectionFailed事件編寫代碼

ShowMessage("Connection Failed"); //若連接配接失敗則報告

3. 為它的OnConnectionRequired事件編寫代碼

AnsiString BoxCaption;

AnsiString BoxMsg;

BoxCaption = "請求連接配接";

BoxMsg = "請求連接配接,連接配接嗎?";

if (MessageBox(0, &BoxMsg[1], &BoxCaption[1], MB_YESNO + MB_ICONEXCLAMATION) == IDYES)

{

    handled = TRUE;

    Form1->Button1Click(this);

}

4.為它的OnDisconnect事件編寫代碼

if (StatusBar1 != 0)

    StatusBar1->SimpleText = "Disconnected"; //斷開連接配接後在狀态欄顯示已斷開

5. 為它的OnFailuer事件編寫代碼

ShowMessage("操作失敗!");

6. 為它的OnHostResovled事件編寫代碼

StatusBar1->SimpleText = "Host Resolved";

7.為它的OnInvailidHost事件編寫代碼

AnsiString NewHost;

if (InputQuery("非法主機名!", "請重新輸入新的主機名",NewHost))

{

    NMPOP31->Host = NewHost;

    handled = true;

}

8. 為它的OnList事件編寫代碼

if (Msg < 2)

{

    Memo3->Clear();

    Memo3->Lines->Add("Message Number / Message Size");

}

Memo3->Lines->Add(IntToStr(Msg)+"/ "+IntToStr(Size));

9. 為它的OnListPacketRecvd事件編寫代碼

StatusBar1->SimpleText = IntToStr(NMPOP31->BytesRecvd)+" bytesof "+IntToStr(NMPOP31->BytesTotal)+" Received";

10. 為它的OnReset事件編寫代碼

ShowMessage("重置删除标志");

11. 為它的OnRetrieveEnd事件編寫代碼

Form1->Cursor = crDefault;

StatusBar1->SimpleText = "恢複完成";

12. 為它的OnRetrieveStart事件編寫代碼

Form1->Cursor =crHourGlass;

StatusBar1->SimpleText = "恢複開始";

13. 為它的OnStatus事件編寫代碼

if (StatusBar1 != 0)

StatusBar1->SimpleText = Status;

14. 為它的OnSuccess事件編寫代碼

StatusBar1->SimpleText = "操作成功"。

至此,我們的電子郵件程式就完成了,編譯運作後,輸入你的pop3伺服器名,你就可以接收到你的電子郵件了,怎麼樣?試一試吧。

-=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=-

             //

  __________/LB/___   OUTINN

 /  _[]_   /____/  /

/_________/| () |/__/  http://outinn.yeah.net/

 |  ____ /-| __ |-/|  Welcome to visit OUTINN!

 |__|==|___| || |__|

 -=--=--=- |_||_| =-  Fancy,  [email protected]

繼續閱讀