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

📄 mailform.cpp

📁 this soure code is easy! thank~
💻 CPP
字号:
#include "mailform.h"#include <qpushbutton.h>#include <qtooltip.h>#include <qfont.h>#include <qtable.h>#include <qprogressbar.h>#include <qfile.h>#include <qstring.h>#include <qfile.h>#include <qtextstream.h>#include <qprocess.h>#include <qsocket.h>#include <qlayout.h>#define FONT_SIZE 10static int j=0;//static int amountOfMail;//static QString state;//static int myi=0;//static bool flag;static int state;//static bool firstConnect=true;MailForm::MailForm(QWidget * parent, const char * name): QDialog(parent,name){	setCaption("Form1");	mailFormLayout = new QVBoxLayout( this, 11, 6, "mailFormLayout");	butLayout = new QHBoxLayout( 0, 0, 6, "butLayout");	butSpacer = new QSpacerItem( 40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );	mailFormLayout->setMargin(7);	PushButton1= new QPushButton(this,"PushButton1");	//PushButton1->setGeometry(QRect(460,370,50,30));	PushButton1->setText(tr("&Exit"));	PushButton2= new QPushButton(this,"PushButton2");	//PushButton2->setGeometry(QRect(380,370,78,30));	PushButton2->setText(tr("&Retrieve"));		PushButton3= new QPushButton(this,"PushButton3");	//PushButton3->setGeometry(QRect(300,370,78,30));	PushButton3->setText(tr("&Compose"));						QFont font(PushButton1->font());	font.setFamily("Courier");	font.setPointSize(FONT_SIZE);	PushButton1->setFont(font);	PushButton2->setFont(font);	PushButton3->setFont(font);	QToolTip::add(PushButton1,tr("Click on this Button will Exit This Form."));	QToolTip::setFont(font);		table = new QTable(this , "table");	//table->setGeometry(QRect(20,20,500,340));	table->setNumRows(15);	table->setNumCols(5);		table->horizontalHeader()->setLabel( 0, tr( "From:" ) );	table->horizontalHeader()->setLabel( 1, tr( "To:" ) );	table->horizontalHeader()->setLabel( 2, tr( "Date:" ) );	table->horizontalHeader()->setLabel( 3, tr( "Subject:" ) );	table->horizontalHeader()->setLabel( 4, tr( "Content" ) );	table->setColumnWidth ( 3,215);	table->setColumnWidth ( 4,500);	table->hideColumn(1);	table->hideColumn(4);	butLayout->addItem( butSpacer );	butLayout->addWidget( PushButton3);	butLayout->addWidget( PushButton2);	butLayout->addWidget( PushButton1);	mailFormLayout->addWidget( table );	mailFormLayout->addLayout( butLayout);		progBar = new QProgressBar(15,this,"progBar");	progBar->setGeometry(QRect(180,180,200,30));	progBar->hide();	connect(PushButton1,SIGNAL(clicked()),this,SLOT(close()));	connect(PushButton2,SIGNAL(clicked()), this,SLOT(open_hello()));	//line = new QString();		//file = new QFile( "in.txt" ) ;	//file->open( IO_ReadWrite | IO_Truncate );	//stream= new QTextStream(file);        proc = new QProcess(this);	//connect(proc,SIGNAL(readyReadStdout()),this, SLOT(ReadOutput()));  		mailSocket = new QSocket();	connect(mailSocket, SIGNAL(readyRead()), this, SLOT(readWrite()));	connect(mailSocket,SIGNAL(connected()),this,SLOT(whenConnected()));			mailStream = new QTextStream(mailSocket);	iMailCount =0;		resize( QSize(480,272).expandedTo(minimumSizeHint()) );        }void MailForm::whenConnected(){		//table->setText(13,0,"The Socket connected to Host!!!");}void MailForm::fillContent(){			//for (int i=0 ; i<4 ; i++)	//{		//if (!(file->atEnd()))	//	{					//*line = stream->readLine();		//	table->setText(j,i,*line);	//	}			//}		progBar->setProgress(j);	j=j+1;	if (j==15)	{		progBar->hide();		QObject::killTimers();		j=0;		progBar->setProgress(j);		//file->reset();			}}void MailForm::open_hello(){		for (int r=0; r<15; r++)		for (int s=0; s<5; s++)			table->setText(r,s,"");			mailSocket->connectToHost("pop3.ethome.com.tw",110);	state = USER;		iMailCount =0;}void MailForm::readWrite(){	int b,c;	bool flag=false;	QString contentString="";	QString response,temp;	if (!mailSocket->canReadLine())		return;			switch(state){		case USER :			//table->setText(14,1, "@@USER@@  " + mailSocket->readLine());			*mailStream << "user trovsky\r\n";			state= PASS;			break;		case PASS :			//table->setText(14,2, "@@PASS@@  " + mailSocket->readLine());				*mailStream << "pass 2ljuxgou\r\n";			state= STAT;			break;		case STAT :			//table->setText(14,3, "@@STAT@@  " + mailSocket->readLine());			*mailStream << "stat\r\n";			state= RETR;			break;		/*case WAIT2:			state=RETR;			table->setText(13,0, "@@WAIT2@@  " + mailSocket->readLine());			break; */		case RETR :			//table->setText(13,1, "@@RETR@@  " + mailSocket->readLine());						if (iMailCount < 15)			{				iMailCount = iMailCount + 1;				temp.setNum(iMailCount);				*mailStream << "retr " << temp << "\r\n";				state = WAIT;			}			else { 				/*messageBox->append("@@READ@@  ");*/ 				state= QUIT;				*mailStream << "noop"  << "\r\n";			}			break;		case WAIT :			//table->setText(13,2, "@@WAIT@@  " + mailSocket->readLine());				state = READ;			break;		case READ :			//printf("%d\n",iMailCount);			//messageBox->append("=========Mail "+temp.setNum(iMailCount)+"============");			do {					//printf("%d\n",iMailCount);					temp = mailSocket->readLine();					if (temp=="\r\n") flag=true;										b=temp.find("Return-Path"); 					c=temp.find("\n",b);					if (!(b==-1))						table->setText(iMailCount-1,0,temp.mid(b+12,c-b-12).remove('<').remove('>').stripWhiteSpace());											b=temp.find("X-Original-To:");					c=temp.find("\n",b);					if (!(b==-1)) 						table->setText(iMailCount-1,1,temp.mid(b+15,c-b-15).stripWhiteSpace());											b=temp.find("Subject:");					c=temp.find("\n",b);					if (!(b==-1))						table->setText(iMailCount-1,3,temp.mid(b+9,c-b-9));										b=temp.find("Date:");					c=temp.find("\n",b);					if (!(b==-1))					{ 						table->setText(iMailCount-1,2,temp.mid(b+6,c-b-6));						//flag=true;						//messageBox->append("Content:");					}					if (flag)						contentString += mailSocket->readLine();			} while (mailSocket->canReadLine());			table->setText(iMailCount-1,4,contentString);			contentString="";			flag=false;			state=RETR;			*mailStream << "noop"  << "\r\n";			break;		case QUIT :			//messageBox->append("@@QUIT@@ "+mailSocket->readLine());			//*mailStream << "noop"  << "\r\n";			//*mailStream << "quit"  << "\r\n";			//printf("QUIT instruction sended!!!\n");				//table->setText(14,0,"@@QUIT@@ "+mailSocket->readLine());			mailSocket->flush();			*mailStream << "quit"  << "\r\n";			//delete mailSocket;			break;	}	}MailForm::~MailForm() {}

⌨️ 快捷键说明

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