通過對 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]