pop3.cpp
来自「Visual_C++.NET实用编程百例」· C++ 代码 · 共 134 行
CPP
134 行
#include "StdAfx.h"
#include ".\pop3.h"
#include "MAPI.h"
#define CONNECTION_CHECK 1
#define USER_CHECK 2
#define PASSWORD_CHECK 3
#define STAT_CHECK 4
CPOP3::CPOP3(void)
: m_nNum(0)
, m_strErr(_T(""))
{
m_Server.Create();
}
CPOP3::~CPOP3(void)
{
m_Server.Close ();
}
BOOL CPOP3::Connect(void)
{
return 0;
}
int CPOP3::GetNumofMail(void)
{
return m_nNum;
}
BOOL CPOP3::Disconnect(void)
{
return 0;
}
BOOL CPOP3::Connect(CString& host, CString& user, CString& pwd)
{
char buf[512];
if(!m_Server.Connect (host,110))
{
m_strErr=_T("不能连接到邮件服务器");
return FALSE;
}
else
{
if(CheckResponse(CONNECTION_CHECK)==FALSE)
return FALSE;
wsprintf(buf,"USER%s\r\n",(LPCSTR)user);
m_Server.Send (buf,(int)strlen(buf));
if(CheckResponse(USER_CHECK)==FALSE)
return FALSE;
wsprintf(buf,"PASS%s\r\n",(LPCSTR)pwd);
m_Server.Send (buf,(int)strlen(buf));
if(CheckResponse(PASSWORD_CHECK)==FALSE)
return FALSE;
return TRUE;
}
}
BOOL CPOP3::CheckResponse(int respType)
{
char buf[256]="";
m_Server.Receive (buf,sizeof(buf));
switch(respType)
{
case CONNECTION_CHECK:
if(strnicmp(buf,"-ERR",4)==0)
{
m_strErr=_T("错误的连接!");
return FALSE;
}
break;
case USER_CHECK:
if(strnicmp(buf,"-ERR",4)==0)
{
m_strErr=_T("错误的用户名!");
return FALSE;
}
break;
case PASSWORD_CHECK:
if(strnicmp(buf,"-ERR",4)==0)
{
m_strErr=_T("密码错误!");
return FALSE;
}
break;
case STAT_CHECK:
if(strnicmp(buf,"-ERR",4)==0)
{
m_strErr=_T("STAT命令错误!");
return FALSE;
}
else
{
BOOL mailNum=TRUE;
for(char* p=buf;*p!='\0';p++)
{
if(*p=='\t'||*p==' ')
{
if(mailNum==TRUE)
{
m_nNum=atoi(p);
mailNum=FALSE;
}
else
{
m_nNum=atoi(p);
return TRUE;
}
}
}
}
break;
}
return 0;
}
BOOL CPOP3::Statistics(void)
{
char buf[512];
wsprintf(buf,"STAT\r\n");
m_Server.Send (buf,(int)strlen(buf));
if(CheckResponse(STAT_CHECK)==FALSE)
return FALSE;
else
return TRUE;
}
CString CPOP3::GetErrMsg(void)
{
return m_strErr;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?