目前互連網上,EMAIL的使用是越來越廣泛了。在所有的TCP連接線路中,大概有一半的線路是用來收發EMAIL的。因此,許多網絡應用程序要想離開POP3協議是不可能的。
而且,很多EMAIL系統都是使用SMTP協議來作為發送協議,而POP3協議來作為接受協議。關於這2個協議的許多資料,你可以看一下RCF821(關於SMTP的)和RCF1225(關於POP3的)。雖然在WINDOWS操作系統中,有一個叫MAPI應用程序是來管理EMAIL的,但是它的功能還不夠強大,不足以直接處理一些EMAIL服務。所以,我寫了一個有關於POP3協議的C++類,在這個類中我還使用了CSocket作為一個類成員(這好象有點不可想象),這樣的話呢,我們可以在連接的時候使用它。並且,該POP類使用的一些功能類似於POP3協議中的一些命令。下面就代碼:
/*--------------------------------------------------------------------
Pop.h : main header file for the POP application
-----------------------------------------------------------------------*/
#if !defined(AFX_POP_H__A44B38B6_697C_11D1_881E_00001C302581__INCLUDED_)
#define AFX_POP_H__A44B38B6_697C_11D1_881E_00001C302581__INCLUDED_
#define CONNECTION_CHECK 0
#define USER_CHECK 1
#define PASSWORD_CHECK 2
#define QUIT_CHECK 3
#define DELETE_CHECK 4
#define RSET_CHECK 5
#define STAT_CHECK 6
#define NOOP_CHECK 7
#define LIST_CHECK 8
#define RETR_CHECK 9
/////////////////////////////////////////////////////////////////////////////
class CPop
{
public:
BOOL List();
CWordArray m_SizeOfMsg;
CString GetErrorMessage(); // If there is any error this will return it method
CString GetPassword(); // Getting Password stored in class
void SetPassword(CString& Password); // Setting Password in class
CString GetUser(); // Getting user name stored in class
void SetUser(CString& User); // Setting user name in class
CString GetHost(); // Getting Host name (email server name) stored in class
void SetHost(CString& Host); // Setting Host name (email server name) in class
BOOL Connect(); // Connecting to email server
int GetTotalMailSize(); // it returns the Total Mail Size
int GetNumberOfMails(); // It return the number of mails
CString GetMsgContents();
BOOL Statistics(); // issue the STAT command on email server
BOOL Retrieve(int MsgNumber); // Getting any particular mail message
BOOL Reset(); // issue the reset command on email server
int GetMessageSize(int MsgNumber); // Return a size of any particular mail
BOOL Noop();