65.9K
CodeProject 正在变化。 阅读更多。
Home

CPop3 类

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.17/5 (12投票s)

2002年4月1日

2分钟阅读

viewsIcon

141051

downloadIcon

4984

这是一个简单的 CPop3 类,可以连接到 pop3 服务器并接收消息。

Sample Image

引言

这是一个简单的 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 文件。

希望你喜欢它!

© . All rights reserved.