CPop3 类






4.17/5 (12投票s)
2002年4月1日
2分钟阅读

141051

4984
这是一个简单的 CPop3 类,可以连接到 pop3 服务器并接收消息。
引言
这是一个简单的 CPop3
类,可以连接到 pop3 服务器并接收消息。 它与其他 pop3 类(例如 PJ Naughter 的类)有什么区别? 好吧,首先 - 它是我的 :-) 其次 - 它是 CAsyncSocket
派生类,这就是为什么使用它与其他类有很大不同的原因。 快速信息...
如何使用它?
简单来说,我认为。 主类是 CPop3
,所以你只需要创建一个这种类型的变量,设置一些东西,编译并运行。 一旦你设置好东西,一切都会自动进行。 还有另一个类 - CBase4Pop3
,在 Gniazdo.h 中声明 - 但你通常不会直接使用它(参见 Gniazdo.h)。
步骤 1 - 开始
创建基于对话框的应用程序,将 Gniazdo.h、Gniazdo.cpp、pop31.h 和 pop31.cpp 文件添加到项目中,然后在 CYourDlg
类中创建一个 CPop3 变量。
步骤 2 - 设置一些东西
编辑 gniazdo.h 文件。 在开始时,你将看到类似这样的内容
#define DLG CPop3Dlg* //change it to your CDialog-based class
将其更改为基于对话框的类。 并且不要忘记包含属性头文件,如果需要的话。 现在,在你的基于对话框的类中创建一个名为 Dispatch
的公共函数//your dlg.h file public: void Dispatch(LONG param); //declaration //your dlg.cpp file void CYourDlg::Dispatch(LONG param) { CString s; switch(param) { case S_CONNECT: //we are connected //your code on OnConnect event break; case S_RECEIVE: //OnReceive //and so on...所以现在,传递给
CPop3
的每条消息都将被传递到你的函数中。步骤 3 - 获取信息
如何处理消息? 查看 pop3Dlg.cpp 以获取详细信息。 基本上,你可以调用 CPop3::GetLastMsg(CString &s)
来获取服务器的最新数据。 其他函数的工作方式类似,因此你使用它们时应该没有任何问题。 目前有 6 个 socket 消息
//basic #define S_CLOSE 1 //send when we are about to close connection #define S_CONNECT 2 //send when we have just connected to a server #define S_RECEIVE 3 //we are receiving some stuff //and additional #define S_GETNUMMSGS 5 //send when user can obtain number of messages #define S_GETSIZEMSGS 6 //as above, but size of messages #define S_ENDRETR 7 //send when done retrieving
步骤 4 - 初始化
首先,确保你的 InitInstance
中有 AfxInitSocket
。 其次,设置父窗口、用户、密码、服务器并连接到服务器
void CYourDlg::OnConnectBtn() { // TODO: Add your control notification handler code here pop3.Set(this); //set window that will receive messages UpdateData(TRUE); pop3.SetProp(user,pass); //set user and pass pop3.DelAfterRead(del); //want to delete messages from server? pop3.Create(); //create socket pop3.Connect((LPCSTR)server,110); //connect to a server UpdateData(FALSE); }
最后一步...
一旦你成功连接到服务器,一切都会自动进行,即检查消息,获取它们,如果你愿意,还可以删除它们并断开连接。 当它收到错误时,该类将与服务器断开连接。 要查看消息,只需调用 CString CPop3::GetMsgStuff(int i)
和 CString CPop3::GetMsgBody(int i)
,其中 i
代表消息编号。 CString CPop3::GetMsg(int i)
返回所有消息。 在发送 S_ENDRETR
消息(= 已收到所有消息)和 S_CLOSE
之后,该类将与服务器断开连接。 有关其他有用的功能,请参见 pop31.h 文件。
希望你喜欢它!