用 C++BUILDER 實現 POP3 電子郵件的接收 (轉)

worldblog發表於2007-12-09
用 C++BUILDER 實現 POP3 電子郵件的接收 (轉)[@more@]

透過對 C++BUILDER 的設定,我們可以建立一個自己的POP3電子接收。

一、建立一個工程

二、建立一個新的表單,設定它的caption屬性為Get,在上面放置一個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的用途自然為顯示郵件列表。在表單的底部放置一個Statar控制元件用以顯示工作狀態。最後,最重要的是在表單上放置一個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->Pass = Edit4->Text; //得到口令
NMPOP31->Connect(); //開始連線
Label10->Caption = "# of Messages: "+IntToStr(NMPOP31->MailCount); //顯示郵件的數量

為Botton2的OnClick事件編寫程式碼:

NMPOP31->Dinnect(); //使之能夠與伺服器斷開連線

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

NMPOP31->DeletMessage(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
 / _[]_ /____ 
/_________/| () |__ /">
 | ____ /-| __ |-| Welcome to visit OUTINN!
 |__|==|___| || |__|
 -=--=--=- |_||_| =- Fancy, 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-990003/,如需轉載,請註明出處,否則將追究法律責任。

相關文章