Visual C++网络编程经典案例详解 第7章 邮件收发器 接收邮件 封装客户端发送与接收功能

    xiaoxiao2022-07-07  177

    由于客户端需要发送SMTP命令以及接收服务器响应码和邮件数据 所以 为了方便用户在客户端编程时调用这些功能 需要自定义一个函数实现客户端发送命令与接收服务器返回的数据

    将自定义函数命名为SendCmdAndRecv() 如何声明和实现函数

    首先,在CRecv类在对自定义函数SendCmdAndRecv()进行声明 函数声明如下

    class CRecv : public CDialog //CRecv类声明 { public: ... //省略部分代码 void SendCmdAndRecv(int x); //自定义函数 ... //省略部分代码 }

    上面代码的作用是在CRecv类中 手动添加自定义函数SendCmdAndRecv()的方法

    自定义函数SendCmdAndRecv()的作用是在客户端发送用户信息 到服务器 并且待服务器验证成功后 客户端用于发送获取邮件的具体命令 参数x表示获取邮件的序列号码

    然后,在CRecv类中编写代码实现自定义函数的功能

    void CRecv::SendCmdAndRecv(int x) { n=x; CString str; char recvdata[1024]={0},ch[1024],ch2[1024]; str.Format("retr d%",n); str+="\r\n"; send(s,str.GetBuffer(1),sizeof(str),0); if(recv(s,recvdata,1024,0)) { if(recvdata[]=='O' && recvdata[1]=='K') { recvdata[sizeof(recvdata)+1]="\0"; maliadd=recvdata[]; while(i=mailadd.Find("from:")!=-1 || i<mailadd.Find("\r\n")); //循环查找 { ch[i++]=recvdata[i++]; } GetWindowText(IDC_NAME)->SetWindowText(&ch); if(i=mailadd.Find("\n")!=-1) { ch2[i++]=recvdata[i+=]; GetWindowText(IDC_EDIT1)->SetWindowText(&ch); } } else { MessageBox("接收失败!"); } } }

    自定义函数实现了发送RETR命令 同时接收服务器返回的请求邮件并且将邮件内容显示在界面中 在程序中 发送相关命令到服务器 如果服务器执行命令成功 则返回相应的邮件 客户端接收到该邮件数据后 在数据中查找发件人的邮件地址以及邮件内容等进行显示

    用户通过代码运行后的效果 可以知道自定义函数SendCmdAndRecv()不但可以发送命令 还可以接收邮件内容并显示

    当用户查看当前邮件以前或以后的邮件时 同样需要使用到该函数

    最新回复(0)