亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? smtp.c

?? 在嵌入式linux下發(fā)送郵件的SMTP客戶端程序。基于mips平臺可直接使用
?? C
?? 第 1 頁 / 共 4 頁
字號:
	}
	return TTRUE; 
} 

BOOL ProcedureCMD(int Type, char* buf)
{
	char	temp[3];	
	int		temp2 = 0;
	//開始處理從服務(wù)器接收到的數(shù)據(jù) 
	if(buf == NULL)
	{
		return TFALSE;
	}

	strncpy(temp, buf, 3); 
	temp2 = atoi(temp); 

	switch (Type) 
	{ 
	case CONNECTION_CHECK: 
		if (temp2 != 220) 
		{ 
			strcpy(g_ErrorMessage, GetError(buf)); 
			return TFALSE; 
		} 
		break; 
		
	case HELLO_CHECK: 
		if (temp2 != 250) 
		{ 
			strcpy(g_ErrorMessage, GetError(buf)); 
			return TFALSE; 
		} 
		break; 
	case MAIL_CHECK: 
		if (temp2 != 250) 
		{ 
			strcpy(g_ErrorMessage, GetError(buf)); 
			return TFALSE; 
		} 
		break; 
	case RCPT_CHECK: 
		if (temp2 != 250) 
		{ 
			strcpy(g_ErrorMessage, GetError(buf)); 
			return TFALSE; 
		} 
		break; 
	case DATA_START_CHECK: 
		if (temp2 != 354) 
		{ 
			strcpy(g_ErrorMessage, GetError(buf)); 
			return TFALSE; 
		} 
		break; 
	case DATA_END_CHECK: 
		if (temp2 != 250) 
		{ 
			strcpy(g_ErrorMessage, GetError(buf)); 
			return TFALSE; 
		} 
		break; 
	case QUIT_CHECK: 
		if (temp2 != 221) 
		{ 
			strcpy(g_ErrorMessage, GetError(buf)); 
			return TFALSE; 
		} 
		break; 
	case DATA_CHECK: 
		if (temp2 != 354) 
		{ 
			strcpy(g_ErrorMessage, GetError(buf)); 
			return TFALSE; 
		} 
		break; 	
	}
	return TTRUE; 
}

BOOL ReadCommandResponse(int nExpectedCode)
{
	char*	pszOverFlowBuffer = NULL;
	char	sBuf[256];
	BOOL	bSuccess = TFALSE;
	memset(sBuf, 0, 256);
	bSuccess = ReadResponse(sBuf, 256, "\r\n", nExpectedCode, &pszOverFlowBuffer, 4096);
	if (pszOverFlowBuffer != NULL)
	{
		free(pszOverFlowBuffer);
		pszOverFlowBuffer = NULL;
	}
	
	return bSuccess;
}

BOOL ReadResponse(char* pszBuffer, int nInitialBufSize, char* pszTerminator, int nExpectedCode, char** ppszOverFlowBuffer, int nGrowBy)
{
	int			nTerminatorLen = 0;
	char*		pszRecvBuffer = NULL;
	int			nBufSize = 0;
	BOOL		bFoundTerminator = TFALSE;
	int			nReceived = 0;	
	time_t		strattime;
	time_t		endtime;
	//BOOL		bReadible = TFALSE;
	int			nBufRemaining = 0;
	int			nData = 0;
	char*		pszNewBuf = NULL;
	BOOL		bSuccess = TFALSE;
	char		sCode[4];
	int 		iRet = 0;

	
	//參數(shù)檢測
	if((pszBuffer == NULL) || (pszTerminator == NULL)) 
	{
		return TFALSE;
	}
	
	//獲取結(jié)束符的長度
	nTerminatorLen = strlen(pszTerminator);
	
	//接收獲得的數(shù)據(jù)
	pszRecvBuffer = pszBuffer;
	nBufSize = nInitialBufSize;
	
	//循環(huán)獲得響應(yīng)知道遇到結(jié)束符或者超時	
	time( &strattime );	
	while (!bFoundTerminator)
	{
		//超時
		// printf("Begin do with time out  !\n");
		time( &endtime );
		if ((endtime - strattime) >=	g_dwTimeout)
		{
			printf("Revice Date time out and the g_dwTimeout is %d!\n", g_dwTimeout);
			pszRecvBuffer[nReceived] = '\0';			
			strcpy(g_sLastCommandResponse, pszRecvBuffer); 
			return TFALSE;
		}
		
		/*
		//檢查socket是否可讀
		if (!IsReadable(bReadible))
		{
			pszRecvBuffer[nReceived] = '\0';
			strcpy(g_sLastCommandResponse, pszRecvBuffer); 
			return TFALSE;
		}
		
		//沒有數(shù)據(jù)接受到
		else if (bReadible == TFALSE) 
		{			
			Sleep(100); 
		}
		*/
		
		//從socket接收數(shù)據(jù)
		//Allows allow one space for the NULL terminator
		nBufRemaining = nBufSize-nReceived-1;
		if (nBufRemaining < 0)
		{
			nBufRemaining = 0;
		}
		//printf("Receive param :pszRecvBuffer: %s  nReceived: %d  nBufRemaining: %d !\n", pszRecvBuffer,nReceived,nBufRemaining);
		if(Receive(pszRecvBuffer+nReceived, nBufRemaining) == TFALSE)
		{
			//以空字符結(jié)束字符串
			if (pszRecvBuffer)
				pszBuffer[nReceived] = '\0';
			strcpy(g_sLastCommandResponse, pszRecvBuffer); //分離出最后一個響應(yīng)
			return TFALSE; 
		}	
		else
		{	
			nData = strlen(pszRecvBuffer);			
			//重新設(shè)置超時起始時間
			if (nData > 0)
			{
				time( &strattime );
				//增加獲得的數(shù)據(jù)
				nReceived += nData;							   
			}	
			
			//以空字符結(jié)束字符串			
			if (pszRecvBuffer != NULL)
			{
				pszRecvBuffer[nReceived] = '\0';
			}
			if (nBufRemaining-nData == 0) //檢查是否還有空間
			{
				//申請新的緩沖區(qū)
				nBufSize += nGrowBy; //增加緩沖區(qū)
				pszNewBuf = (char*)malloc(nBufSize);
				//內(nèi)存分配失敗
				if(pszNewBuf == NULL)
				{
					return TFALSE;
				}
				
				//將原來的內(nèi)容復(fù)制到新的緩沖區(qū)中,并用新的緩沖區(qū)接收數(shù)據(jù)
				if (pszRecvBuffer)
					strcpy(pszNewBuf, pszRecvBuffer);
				pszRecvBuffer = pszNewBuf;
				
				//刪除原來緩沖區(qū)
				if (*ppszOverFlowBuffer)
				{
					free(ppszOverFlowBuffer);
					ppszOverFlowBuffer = NULL;
				}
				
				//將新的緩沖區(qū)內(nèi)容存入溢出緩沖區(qū)
				*ppszOverFlowBuffer = pszNewBuf;        
			}
		}
		
		// 檢查結(jié)束符是否被找到
		// 檢查是否到了響應(yīng)結(jié)束,否則提前停止循環(huán)讀取數(shù)據(jù),如果有可能會有多行響應(yīng)		
		iRet = strncmp( &pszRecvBuffer[ nReceived - nTerminatorLen ], pszTerminator, nTerminatorLen );
		if(iRet == 0)
		{			
			bFoundTerminator = TTRUE;
		}
		else
		{			
			bFoundTerminator = TFALSE;
		}
		
	}
	
	//去掉結(jié)束符
	pszRecvBuffer[ nReceived - nTerminatorLen ] = '\0';
	
	//處理多行響應(yīng)
	bSuccess = TFALSE;	
	do
	{
		//檢查響應(yīng)是否是錯誤碼		
		memset(sCode, 0, 4);
		strncpy(sCode, pszRecvBuffer, 3 );
		sCode[3] = '\0';
		sscanf(sCode, "%d", &g_nLastCommandResponseCode );		
		if(g_nLastCommandResponseCode == nExpectedCode)
		{			
			bSuccess = TTRUE;
		}
		else
		{			
			bSuccess = TFALSE;
		}
		
		
		// 分離上一次響應(yīng)
		strcpy(g_sLastCommandResponse, pszRecvBuffer);
		
		// 檢查是否有多行響應(yīng)
		pszRecvBuffer = strstr( pszRecvBuffer, pszTerminator );
		if (pszRecvBuffer)
		{
			// 跳過結(jié)束符
			pszRecvBuffer += nTerminatorLen;	
		}
		
	} while ( !bSuccess && pszRecvBuffer );	

	return bSuccess;
}



// 按照錯誤號準(zhǔn)備錯誤信息 
char* GetError(char* Response) 
{ 
	char*	strRet = NULL;
	strRet = (char*)malloc(256);
	if(strRet == NULL)
	{
		return NULL;
	}
	
	if(find(Response, "211")) 
	{
		strcpy(strRet, "System status or system help reply"); 
		return strRet;
	}
	
	if(find(Response, "214")) 
	{
		strcpy(strRet, "Help Message"); 
		return strRet;
	}
	
	if(find(Response, "220")) 
	{
		strcpy(strRet, "Service is ready"); 
		return strRet;
	}
	
	if(find(Response, "221")) 
	{
		strcpy(strRet, "Service closing transmission channel"); 
		return strRet;
	}
	
	if(find(Response, "250")) 
	{
		strcpy(strRet, "Requested mail action okay, completed"); 
		return strRet;
	}
	
	if(find(Response, "251")) 
	{
		strcpy(strRet, "user not local: will forward to forward path");
		return strRet;  
	}
	
	if(find(Response, "354")) 
	{
		strcpy(strRet, "Start mail input; end with."); 
		return strRet;
	}
	
	strcpy(strRet, "No Error Number is matched with "); 
	strcat(strRet, Response);
	return strRet;
	
} 

//發(fā)送MAIL命令
BOOL Mail(SMTP struMail) 
{ 
	return MailCMD(struMail.m_strSendFrom); 
}


//設(shè)置附件的文件信息
void SetFile(SMTP* struMail, char* strFileName) 
{ 
	strcpy(struMail->m_strFile, strFileName); 
	
}

//獲取郵件的源地址信息
char* GetSendFrom(SMTP struMail) 
{ 
	return struMail.m_strSendFrom; 
}

//設(shè)置郵件的源地址信息
void SetSendFrom(SMTP* struMail, char* strSendFrom) 
{ 
	strcpy(struMail->m_strSendFrom, strSendFrom); 
	
}

//獲取郵件的目的址信息
char* GetSendTo(SMTP struMail) 
{ 
	return struMail.m_strSendTo; 
}

//設(shè)置郵件的目的址信息
void SetSendTo(SMTP* struMail, char* strSendTo) 
{ 
	strcpy(struMail->m_strSendTo, strSendTo); 
	
}


//設(shè)置郵件的SMPT服務(wù)器信息
void SetSMTPServer(SMTP* struMail, char* strSMTPServer) 
{ 
	strcpy(struMail->m_strSMTPServer, strSMTPServer); 
	
}


//設(shè)置用戶的密碼信息
void SetPWD(SMTP* struMail, char* strPWD) 
{ 
	strcpy(struMail->m_strPWD, strPWD); 
	
}


//設(shè)置用戶的帳號信息
void SetUSERID(SMTP* struMail, char* strUSERID) 
{ 
	strcpy(struMail->m_strUSERID, strUSERID); 
	
}

//設(shè)置郵件的正文信息
void SetMailText(SMTP* struMail, char* strMailText) 
{ 
	strcpy(struMail->m_strMailText, strMailText); 
	
}


//設(shè)置郵件的標(biāo)題信息
void SetMailSubject(SMTP* struMail, char* strMailSubject) 
{ 
	strcpy(struMail->m_strMailSubject, strMailSubject); 
	
}


//設(shè)置郵件的發(fā)送人信息
void SetSenderName(SMTP* struMail, char* strSenderName) 
{ 
	strcpy(struMail->m_strSenderName, strSenderName); 
	
}

//判斷是否是帶附件的郵件
void ISMIME(SMTP struMail )
{   
	if(strlen(struMail.m_strFile ) >0 )
	{	
		g_bMIME = TTRUE;			
	}
	else
	{
		g_bMIME = TFALSE;	
	}
	
}

//BOOL IsSameTime(char* strTime, int hour)

BOOL IsSameWeek(char* strWeek, int weekly)
{
	//printf("The value of strWeek is %s and the weekly is %d!\n", strWeek, weekly);
	switch (weekly) 
	{ 
	case 1: 					//星期一
		if (strcasecmp(strWeek, "Mon") == 0) 
		{ 			
			return TTRUE; 
		} 
		else
		{
			return TFALSE; 
		}
		
	case 2: 					//星期二
		if (strcasecmp(strWeek, "Tue") == 0) 
		{ 			
			return TTRUE; 
		} 
		else
		{
			return TFALSE; 
		}
		
	case 3: 					//星期三
		if (strcasecmp(strWeek, "Wed") == 0) 
		{ 			
			return TTRUE; 
		} 
		else
		{
			return TFALSE; 
		}
		
	case 4: 					//星期四
		if (strcasecmp(strWeek, "Thu") == 0) 
		{ 			
			return TTRUE; 
		} 
		else
		{
			return TFALSE; 
		}
		
	case 5: 					//星期五
		if (strcasecmp(strWeek, "Fri") == 0) 
		{ 			
			return TTRUE; 
		} 
		else
		{
			return TFALSE; 
		}
		
	case 6: 					//星期六
		if (strcasecmp(strWeek, "Sat") == 0) 
		{ 		
			return TTRUE; 
		} 
		else
		{
			return TFALSE; 
		}
		
	case 7: 					//星期日
		if (strcasecmp(strWeek, "Sun") == 0) 
		{ 			
			return TTRUE; 
		} 
	default:
		{
			return TFALSE; 			
		}
	}
}
//發(fā)送郵件信息
//sendmail [server] [user] [password] [to] [weekly] [time]*/
//輸入?yún)?shù)說明:
//pServer:SMTP服務(wù)器, 格式:smtp.sina.com.cn
//pUsrID: SMTP服務(wù)器的用戶ID
//pPWD: SMTP服務(wù)器的指定用戶ID對應(yīng)的密碼;
//pTo:郵件的發(fā)送目的地的郵箱地址,如charlie.xiang@asokausa.com
//weekly:發(fā)送的周信息,如果是0,則表示每天發(fā)送,如果是1-7則表示對應(yīng)的星期幾發(fā)送;
//hour:發(fā)送郵件的具體時刻,如果是8則表示8點(diǎn)發(fā)送郵件;

BOOL sendmail(char* pServer, char* pUsrID, char* pPWD,char *pFrom,char* pTo, int weekly, int hour) 
{
	
	SMTP 			m_smtp; 
	//int				Rreqtime = 60*15;			
	//int				iTime = 0;
	time_t		long_time; 
	struct 		tm	*newtime;   
	char*			strWeek = NULL;	
	char*			strTime = NULL;		
	BOOL			bDay = TFALSE;
	BOOL			bSendMail = TFALSE;
	int				iHour = 0;
	char*			strTimeBuf = NULL;
	int				i;
	
	//初始化行速局
	Initialize(&m_smtp);

	//參數(shù)檢測
	if((pServer==NULL)||(pUsrID==NULL)||(pPWD==NULL)||(pTo==NULL))
	{
			printf("invalid input parameter!\n");
			return TFALSE;
	}
	
	if((weekly<0)||(weekly>7))
	{
			printf("The value of  weekly is invalid!\n");
			return TFALSE;
	}
	
	if((hour<0)||(hour>24))
	{
			printf("The value of  hour is invalid!\n");
			return TFALSE;
	}
	
	if((pServer==NULL)||(pUsrID==NULL)||(pPWD==NULL)||(pTo==NULL))
	{
			printf("Invaid input parameter!\n");
			return TFALSE;
	}
	
	if(weekly == 0)
	{
		bDay = TTRUE;
	}
	else
	{
		bDay = TFALSE;
	}			
	
	//對數(shù)據(jù)進(jìn)行初始化(SMTP服務(wù)器、FROM信息、TO信息、USER信息、PWD信息一定要設(shè)置,否則無法發(fā)送郵件)
	SetSMTPServer(&m_smtp, pServer);
	SetUSERID(&m_smtp, pUsrID);
	SetPWD(&m_smtp, pPWD);
	SetSendTo(&m_smtp, pTo);
	
	//設(shè)置郵件的缺省信息
	SetSendFrom(&m_smtp, pFrom);
	SetSenderName(&m_smtp, "Motorola");			
	SetMailSubject(&m_smtp, "Logs for MDU Gateway");
	SetMailText(&m_smtp, "Logs");     
	SetFile(&m_smtp, "/ifx/web/syslog.cat");	   //Linux 格式文件
     
	//檢查郵件的信息是否合法
	if(!CheckMailInfo(m_smtp))
	{
		printf("The Info of MAIL is invalid!\n");
		return TFALSE;
		
	}
	
	while(1)
	{
		//根據(jù)設(shè)置的時間信息發(fā)送郵件
		time( &long_time );               
		newtime = localtime( &long_time ); 	
		strTimeBuf = asctime(newtime);	
		strWeek = substr(strTimeBuf,0, 3);								//星期信息 如:Tue
		strTime = substr(strTimeBuf, 11, 2);	 						//詳細(xì)時間信息 只取出小時的信息

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
高清国产午夜精品久久久久久| 国产一区二区三区久久久| 日韩精品一区二区在线观看| 丰满放荡岳乱妇91ww| 天天影视色香欲综合网老头| 国产农村妇女毛片精品久久麻豆| 欧美日韩精品免费观看视频| 成人av电影观看| 久久不见久久见免费视频1| 亚洲制服丝袜av| 国产精品久久久久影院亚瑟| 精品免费99久久| 欧美日韩免费观看一区二区三区| 成人免费av在线| 久久99久久99| 美女网站在线免费欧美精品| 一区二区三区久久| 国产精品免费视频观看| 久久男人中文字幕资源站| 欧美一二三四区在线| 精品污污网站免费看| 一本色道久久加勒比精品| 不卡的av电影在线观看| 国产成人综合网| 国产一二精品视频| 激情国产一区二区| 精品在线播放免费| 精品制服美女久久| 久久er精品视频| 老司机精品视频导航| 美腿丝袜亚洲综合| 久久精工是国产品牌吗| 久久激五月天综合精品| 精品一区二区在线看| 蜜桃在线一区二区三区| 麻豆精品视频在线观看| 老鸭窝一区二区久久精品| 蜜臀久久99精品久久久画质超高清| 日日摸夜夜添夜夜添亚洲女人| 艳妇臀荡乳欲伦亚洲一区| 亚洲精品一二三四区| 亚洲乱码日产精品bd| 亚洲精品中文字幕乱码三区| 亚洲一区二区在线观看视频| 亚洲国产成人tv| 首页亚洲欧美制服丝腿| 美腿丝袜亚洲一区| 国内精品视频666| 国产白丝精品91爽爽久久| 成人性生交大片免费看中文网站| 国产成a人无v码亚洲福利| 成人污污视频在线观看| 色老头久久综合| 3atv一区二区三区| 精品久久人人做人人爽| 欧美国产精品一区二区三区| 亚洲人成小说网站色在线 | 亚洲欧美日韩精品久久久久| 亚洲精品日韩综合观看成人91| 亚洲电影视频在线| 日本强好片久久久久久aaa| 国产在线播放一区三区四| 成人深夜福利app| 欧美亚洲丝袜传媒另类| 精品国一区二区三区| 国产亚洲综合在线| 亚洲欧美一区二区三区极速播放 | 欧美成人高清电影在线| 国产午夜精品久久久久久免费视| 亚洲人成人一区二区在线观看| 亚洲大型综合色站| 国产乱码精品一区二区三区忘忧草 | 欧美一卡二卡在线| 国产亚洲人成网站| 一区二区三区欧美激情| 免费成人在线观看| 99久久久精品| 欧美一级片在线观看| 国产精品青草综合久久久久99| 一区二区三区四区乱视频| 捆绑调教美女网站视频一区| av高清久久久| 欧美大胆人体bbbb| 亚洲狠狠丁香婷婷综合久久久| 美腿丝袜一区二区三区| 色播五月激情综合网| 精品国产乱码久久久久久久久| 日韩理论片中文av| 久久精品国产久精国产| 99精品国产一区二区三区不卡| 日韩一级大片在线观看| 亚洲免费色视频| 国产精品1024| 日韩欧美在线网站| 亚洲午夜三级在线| 成人性色生活片| 日韩免费在线观看| 亚洲成人福利片| 99视频在线精品| 精品91自产拍在线观看一区| 亚洲综合网站在线观看| 成人毛片老司机大片| 欧美tk丨vk视频| 日本中文字幕不卡| 91成人看片片| 亚洲丝袜精品丝袜在线| 高清成人在线观看| 精品国产乱码久久| 日韩有码一区二区三区| 欧美午夜寂寞影院| 最新久久zyz资源站| 国产精品白丝jk黑袜喷水| 日韩一区二区电影| 亚洲v日本v欧美v久久精品| 色综合天天做天天爱| 国产欧美综合色| 国产乱码精品一区二区三区忘忧草 | 日韩欧美成人一区| 偷拍自拍另类欧美| 欧美在线免费观看亚洲| 亚洲天堂av老司机| 成人app网站| 中文字幕免费一区| 成人性生交大片免费看在线播放| 久久先锋影音av鲁色资源| 久久99精品久久久久久| 日韩欧美中文一区二区| 日本成人中文字幕| 欧美大尺度电影在线| 久久er精品视频| 亚洲精品在线电影| 国产一区中文字幕| 国产三级精品视频| 成人18精品视频| 亚洲免费在线观看视频| 日本韩国一区二区三区| 亚洲一区二区欧美| 欧美美女一区二区在线观看| 亚洲成av人片观看| 日韩视频在线永久播放| 久久99精品一区二区三区| 日韩欧美成人一区二区| 国产专区综合网| 国产精品入口麻豆九色| 91视频在线看| 亚洲高清在线视频| 91精品国产91久久综合桃花| 蜜臀av在线播放一区二区三区| 欧美va亚洲va| 成人在线视频一区| 亚洲男人的天堂在线观看| 欧美亚洲日本一区| 卡一卡二国产精品 | 欧美午夜电影在线播放| 日本伊人精品一区二区三区观看方式| 欧美一区二区三区在线电影| 久久草av在线| 中文字幕日韩欧美一区二区三区| 欧美在线视频日韩| 奇米影视7777精品一区二区| 久久青草欧美一区二区三区| 99热99精品| 日韩在线观看一区二区| 国产欧美视频一区二区| 色视频成人在线观看免| 美国毛片一区二区| 亚洲欧洲无码一区二区三区| 欧美日韩在线一区二区| 国产一区二区中文字幕| 伊人婷婷欧美激情| 精品国产乱码久久久久久夜甘婷婷| 风间由美一区二区三区在线观看| 亚洲精品国久久99热| 日韩免费在线观看| 91麻豆免费观看| 免费高清在线一区| 亚洲人成电影网站色mp4| 日韩久久久精品| 色八戒一区二区三区| 国产原创一区二区| 亚洲综合在线五月| 久久久99免费| 欧美日韩第一区日日骚| 国产成人综合网| 午夜精品视频一区| 国产精品美女久久久久aⅴ| 欧美精品乱码久久久久久按摩 | 99热国产精品| 精品亚洲免费视频| 一级特黄大欧美久久久| 久久久久久久综合狠狠综合| 欧美三级视频在线观看| 高清beeg欧美| 日本特黄久久久高潮| 亚洲欧美电影院| 国产喂奶挤奶一区二区三区| 欧美精品视频www在线观看| av亚洲精华国产精华| 黄色精品一二区| 日韩1区2区日韩1区2区|