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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? smtp.c

?? 在嵌入式linux下發(fā)送郵件的SMTP客戶(hù)端程序。基于mips平臺(tái)可直接使用
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
//===================================================================
//	Asoka USA Corporation
//	文件名	:SMTP.cpp
//	作  者	:charlie(劉翔)
//	版  本	:
//	完成日期:2006-01-08
//	說(shuō)  明	:此文件是用來(lái)實(shí)現(xiàn)SMTP協(xié)議處理
//	其  它	:
//	函數(shù)列表:	Data
//						Mail
//						Connect
//						......
//			 
//
//	歷史記錄:
//		作者:
//	修改內(nèi)容:
//
//	2.	...


////////////////////////////////////////////////////////////////////////// 
// SMTP.cpp: implementation of the CSMTP class. 
// 
////////////////////////////////////////////////////////////////////// 

#include "SMTP.h" 
#include "Base64Coder.h"
#include <malloc.h>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <ctype.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/un.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <dirent.h>
#include <memory.h>
#include <unistd.h>
#include <netdb.h>


BOOL Mail(SMTP struMail); 

char* GetHost();

void SetHost(char* Host); 

//發(fā)送DATA命令信息
BOOL Data(SMTP struMail);	

//// 發(fā)送TO命令信息
BOOL SetTo(SMTP struMail); 

//發(fā)送MAIL命令信息
BOOL MailCMD(char* from); 

//和SMTP服務(wù)器斷開(kāi)連接
BOOL Disconnect();	

//和SMTP服務(wù)器進(jìn)行連接
//BOOL Connect(); 

// 該函數(shù)是通過(guò)擴(kuò)展SMTP會(huì)話(huà)方式連接服務(wù)器的
BOOL ConnectSrvSMTP(const char* pszLocalName, const char* pszUsername, const char* pszPassword);

// 使用AUTH LOGIN命令協(xié)商登錄,即需要對(duì)用戶(hù)名進(jìn)行編碼
BOOL AuthLogin(const char* pszUsername, const char* pszPassword);

//檢查指定命令的響應(yīng)信息
BOOL ReadCommandResponse(int nExpectedCode);

//檢查郵件服務(wù)器的詳細(xì)響應(yīng)信息
BOOL ReadResponse(char* pszBuffer, int nInitialBufSize, char* pszTerminator, int nExpectedCode, char** ppszOverFlowBuffer, int nGrowBy);

char* GetError(char* Response); 

//檢查郵件服務(wù)器的響應(yīng)信息
BOOL CheckResponse(int Type);	

BOOL ProcedureCMD(int Type, char* buf);

char* T2A(char* lp);

//獲取文件的內(nèi)容信息
char* GetFileBody(char* strFileName, int* nBodySize);

//獲取附件的頭信息
char* GetAttachmentHeader(int* nHeaderSize, char* strFileName);

//發(fā)送指定信息的郵件
BOOL SendMailInfo(SMTP struMail);

//發(fā)送郵件的附件信息
BOOL SendAttachment(SMTP struMail);

//發(fā)送附件的尾信息
char* GetFooter(int* nFooterSize);

//發(fā)送郵件頭信息
BOOL SendMIMEHead(SMTP struMail);

//MIME信息中需要增加郵件頭中的MIME信息
BOOL GetMIMEHead(char* strMIMEHeadInfo);

//發(fā)送郵件的郵件頭信息
BOOL SendHeader(SMTP struMail);

//判斷是否是帶附件的郵件
void ISMIME(SMTP struMail);

//檢查郵件信息的合法性
BOOL CheckMailInfo(SMTP struMail);

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

//對(duì)SUBJECT信息進(jìn)行編碼處理
char* EnSubJectCodeString(char* sText);

//對(duì)郵件體BODY信息進(jìn)行編碼處理
void EnBodyCodeString(char* sText, char* strEncode); 

//初始化SMTP信息
void Initialize(SMTP *EmailSMTP);

//設(shè)置附件的文件信息
void SetFile(SMTP* struMail, char* strFileName);

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

//設(shè)置郵件的正文信息
void SetMailText(SMTP* struMail, char* strMailText); 

//設(shè)置用戶(hù)的帳號(hào)信息
void SetUSERID(SMTP* struMail, char* strUSERID); 

//設(shè)置用戶(hù)的密碼信息
void SetPWD(SMTP* struMail, char* strPWD); 

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

//設(shè)置郵件的目的址信息
void SetSendTo(SMTP* struMail, char* strSendTo);

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

//對(duì)指定的字符串進(jìn)行BASE64編碼
void EnCodeString(char* strSoure,char* strEnCode);

BOOL IsSameWeek(char* strWeek, int weekly);

//根據(jù)Quoted printable編碼規(guī)則對(duì)數(shù)據(jù)進(jìn)行編碼處理
void QuotedPrintableEncode(char* sText, char* strEncode);

char HexDigit(int nDigit);

char*  substr(char* pstrChar, int iBegin, int nLength);

//查找指定字符串
int   find(char* pstrChar, const char* strSoure);

//查詢(xún)函數(shù)
int  rfind(char* strData, const char* strSoure);


BOOL  Create();
BOOL  ConnectServer(const char* pszHostAddress, int nPort);
BOOL  ConnectSvr(const struct sockaddr* lpSockAddr, int nSockAddrLen);
BOOL  SendDate(const char*  pszBuf, int nBuf);
void   CloseSocket();
int    Receive(char*  pszBuf, int nBuf);
//BOOL  IsReadable(BOOL bReadible);

static   BOOL				g_bMIME = TFALSE;	
static   int 				g_hSocket = -1; 
static   int				g_NoOfTo = 0;											//發(fā)送的目的地址的個(gè)數(shù)	
static   char				g_ErrorMessage[128];		
static   char				g_Host[128];											//主機(jī)信息
static   int				g_nLastCommandResponseCode = 0;
static   char				g_sLastCommandResponse[128];		
static   int				g_dwTimeout = 0;									//超時(shí)時(shí)間
static   BOOL				g_bConnected = TFALSE;	
static   char				g_strBoundary[128];								//Boundary信息,MIME中定義的數(shù)據(jù)
static   char				g_strEncode[128];								//編碼方式,MIME中定義的數(shù)據(jù)
static   char				g_stCharset[128];								//charset信息,MIME中定義的數(shù)據(jù)

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

void Initialize(SMTP *EmailSMTP)
{ 
	//重新初始化全局變量
	g_NoOfTo = 0; 	
	g_dwTimeout = 120;			//超時(shí)時(shí)間設(shè)置為120秒
	g_bMIME = TFALSE;	
	g_bConnected = TFALSE;	
	memset(g_strBoundary, 0, 128);	
	memset(g_strEncode, 0, 128);	
	memset(g_stCharset, 0, 128);	
	strcpy(g_strBoundary, "18ac0781-9ae4-4a2a-b5f7-5479635efb6b");	
	strcpy(g_strEncode ,"base64");
	strcpy(g_stCharset, "gb2312");
	g_hSocket = -1;
	
	//初始化SMTP結(jié)構(gòu)
	memset(EmailSMTP->m_strFile, 0, 128);					
	memset(EmailSMTP->m_strSendFrom, 0, 64);			
	memset(EmailSMTP->m_strSendTo, 0, 64);			
	memset(EmailSMTP->m_strSMTPServer, 0, 64);			
	memset(EmailSMTP->m_strPWD, 0, 64);			
	memset(EmailSMTP->m_strUSERID, 0, 64);						
	memset(EmailSMTP->m_strMailText, 0, 64);			
	memset(EmailSMTP->m_strMailSubject, 0, 64);			
	memset(EmailSMTP->m_strSenderName, 0, 64);		
	
} 

char* T2A(char* lp)
{ 
	return lp; 
}

// 讀取主機(jī)信息
char* GetHost( )
{ 
	return g_Host; 
} 

//設(shè)置主機(jī)信息
void SetHost(char* Host) 
{ 
	memset(g_Host, 0, 128);
	strcpy(g_Host, Host);
} 

//連接SMTP服務(wù)器
BOOL ConnectSMTP(SMTP struMail) 
{ 
	// printf("begin Connect!\n");
	//char* From= NULL;
	//char* strtemp = NULL;
	//char* Host = NULL;
	//int		nPos = 0;
	char sHostName[100];
	BOOL bConnectOk = TFALSE;	
	//char*  strUsername = NULL;
	//char*  strPassword = NULL;	

	/*
	nPos = find(struMail.m_strSendFrom, "@");	
	From = substr(struMail.m_strSendFrom, 0, nPos);
	strcat(From, struMail.m_strSMTPServer);
	*/
	
	// SMTP端口默認(rèn)是25
	if (!ConnectServer(struMail.m_strSMTPServer, 25)) 
	{ 
		strcpy(g_ErrorMessage,  "Server cannot be connected"); 
		printf("Server cannot be connected!\n"); 	
		return TFALSE; 
	}
	
	else 
	{ 
		// printf("Connect successfully!\n"); 
		//檢查返回的值是否是220
		if(CheckResponse(CONNECTION_CHECK) == TFALSE) 
		{		
			return TFALSE; 
		}
		
		//獲得本地機(jī)器名		
		memset(sHostName, 0, 100);
		gethostname(sHostName, sizeof(sHostName));		
		
		// 進(jìn)行下一步連接,即進(jìn)行SMTP會(huì)話(huà),采用鑒權(quán)方式進(jìn)行會(huì)話(huà)			
		bConnectOk = ConnectSrvSMTP(sHostName, struMail.m_strUSERID , struMail.m_strPWD );
		if(bConnectOk == TFALSE)
		{
			printf("ConnectESMTP fail!\n"); 		
			return TFALSE; 
		}		
		
		return TTRUE; 
	} 	

} 

// 該函數(shù)是通過(guò)擴(kuò)展SMTP會(huì)話(huà)方式連接服務(wù)器的
BOOL ConnectSrvSMTP(const char* pszLocalName, const char* pszUsername, const char* pszPassword)
{
	char	sBuf[128];
	char*	pszData = NULL;
	BOOL	bLoginOk = TFALSE;
	int		nCmdLength = 0;
	
	//驗(yàn)證參數(shù)
	if((pszLocalName == NULL) || (pszUsername == NULL)|| (pszPassword == NULL))
	{
		return TFALSE;
	}
	
	//發(fā)送EHLO命令	
	memset(sBuf, 0, 128);
	strcpy(sBuf, "EHLO ");	
	strcat(sBuf, pszLocalName);
	strcat(sBuf, "\r\n");	
	
	pszData = T2A(sBuf);
	nCmdLength = strlen(pszData);
	if (!SendDate(pszData, nCmdLength))
	{
		return TFALSE;
	}
	
	//檢查Hello命令的響應(yīng) 250
	if(CheckResponse(HELLO_CHECK)==TFALSE) 
	{
		return TFALSE; 
	}	
	
	//進(jìn)行帳號(hào)密碼驗(yàn)證
    bLoginOk = AuthLogin(pszUsername, pszPassword); 
	if(bLoginOk == TFALSE)
	{
		return TFALSE;
	}	
	
	return bLoginOk;
}

// 使用AUTH LOGIN命令協(xié)商登錄,即需要對(duì)用戶(hù)名進(jìn)行編碼
BOOL AuthLogin(const char* pszUsername, const char* pszPassword)
{
	char		sBuf[128];
	int			nCmdLength = 0;
	char*		pszData = NULL;
	char*		temp = NULL;
	char*		pTmp = NULL;		
	char*		sLastCommandString = NULL;
	char*		pszLastCommandString = NULL;
	Base64Coder Coder;
	Base64Coder CoderPWD;
	
	//驗(yàn)證參數(shù)
	if((pszUsername == NULL)|| (pszPassword == NULL))
	{
		return TFALSE;
	}
	
	//發(fā)送AUTH LOGIN命令	
	temp = (char*)malloc(100);
	//檢查分配內(nèi)存是否成功
	if(temp == NULL)
	{
		return TFALSE;
	}
	
	memset(sBuf, 0, 128);
	strcpy(sBuf, "AUTH LOGIN\r\n");
	pszData = T2A(sBuf);
	nCmdLength = strlen(pszData);	
	if (!SendDate(pszData, nCmdLength))
	{
		printf("An unexpected error occurred while sending the AUTH command\n");
		free(temp);
		temp = NULL;
		return TFALSE;
	}
	
	//初始化
	
	//檢查Hello命令的響應(yīng) 334
	if (!ReadCommandResponse(334))
	{
		printf("Server does not support AUTH LOGIN!\n");
		free(temp);
		temp = NULL;
		return TFALSE;
	}
	else
	{		
		//發(fā)送base64編碼后的用戶(hù)名
		sLastCommandString = (char*)malloc(1024);
		if(sLastCommandString == NULL)
		{
			free(temp);
			temp = NULL;
			return TFALSE;
		}
		strcpy(sLastCommandString , g_sLastCommandResponse);
		//需要進(jìn)行數(shù)據(jù)測(cè)試
		sLastCommandString = substr(sLastCommandString, 4, strlen(sLastCommandString) -4);
		pszLastCommandString = T2A(sLastCommandString);
		Base64CoderInit(&Coder);
		_Init(&Coder);
		Decode(&Coder, pszLastCommandString);		
		if (strcmp(DecodedMessage(Coder), "Username:") == 0)
		{
			Encode(&Coder, T2A((char*)pszUsername));			
			memset(temp, 0, 100);
			sprintf(temp, "%s\r\n", EncodedMessage(Coder));			
			strcpy(sBuf, (const char*)temp);			
			
			pszData = T2A((char*)sBuf);
			nCmdLength = strlen(pszData);
			if (!SendDate(pszData, nCmdLength))
			{
				printf("An unexpected error occurred while sending the username\n");	
				free(sLastCommandString);				
				sLastCommandString = NULL;
				free(temp);
				temp = NULL;
				return TFALSE;
			}
			
		}
		else
		{
			printf("An unexpected request received when expecting username request");
			free(sLastCommandString);				
			sLastCommandString = NULL;
			free(temp);
			temp = NULL;
			return TFALSE;
		}
	}
	
	//重新分配內(nèi)存資源	
	free(sLastCommandString);
	sLastCommandString = NULL;
	sLastCommandString = (char*)malloc(1024);
	if(sLastCommandString == NULL)
	{
		return TFALSE;
	}
	
	//檢查返回用戶(hù)名返回碼 
	if (!ReadCommandResponse(334))
	{
		printf("Server did not response correctly to AUTH LOGIN username field!\n");
		free(sLastCommandString);
		sLastCommandString = NULL;
		free(temp);
		temp = NULL;
		return TFALSE;
	}
	else
	{
		//發(fā)送密碼到服務(wù)器	
		memset(sLastCommandString, 0, 1024);
		strcpy(sLastCommandString, g_sLastCommandResponse);		
		pTmp = substr(sLastCommandString, 4, strlen(sLastCommandString) -4);
		pszLastCommandString = T2A(pTmp);
		Base64CoderInit(&CoderPWD);
		_Init(&CoderPWD);
		Decode(&CoderPWD, pszLastCommandString);	
		if (strcmp(DecodedMessage(CoderPWD), "Password:") == 0)
		{
			Encode(&CoderPWD, T2A((char*)pszPassword));
			memset(temp, 0, 100);
			sprintf(temp, "%s\r\n", EncodedMessage(CoderPWD));
			strcpy(sBuf, (const char*)temp);			
			
			pszData = T2A(sBuf);
			nCmdLength = strlen(pszData);
			if (!SendDate(pszData, nCmdLength))
			{
				printf("An unexpected error occurred while sending the password\n");
				free(sLastCommandString);
				sLastCommandString = NULL;
				free(temp);
				temp = NULL;
				return TFALSE;
			}
			
			//檢查是否成功
			if (!ReadCommandResponse(235))
			{
				printf("AUTH LOGIN authentication was unsuccessful\n");
				free(sLastCommandString);
				sLastCommandString = NULL;
				free(temp);
				temp = NULL;
				return TFALSE;
			}
			
			// printf("Test Password successfully!\n"); 
		}
		else
		{
			printf("An unexpected request received when expecting password request\n");
			free(sLastCommandString);
			sLastCommandString = NULL;
			free(temp);
			temp = NULL;
			return TFALSE;
		}
	}
	
	free(sLastCommandString);
	sLastCommandString = NULL;
	free(temp);
	temp = NULL;
	return TTRUE;
}

// 發(fā)送"QUIT"命令到SMTP服務(wù)器: 
BOOL Disconnect() 
{ 
	char buf[256]; 
	memset(buf, 0, 256);	
	sprintf (buf, "QUIT \r\n"); 
	
	//發(fā)送QUIT命令
	if(SendDate(buf, strlen (buf)) == TFALSE)
	{
		return TFALSE; 
	}
	
	//檢查是否正常退出
	if (CheckResponse(QUIT_CHECK) == TFALSE) 
	{
		return TFALSE; 
	}
	else 
	{
		return TTRUE; 
	}
} 

// 發(fā)送"MAIL" 命令到SMTP服務(wù)器: 
BOOL MailCMD(char* from) 
{ 
	char buf[256]; 	
	memset(buf, 0, 256);	
	sprintf(buf, "MAIL FROM:<%s>\r\n", from); 
	
	//發(fā)送MAIL命令
	if(SendDate(buf, strlen (buf)) == TFALSE)
	{
		return TFALSE; 
	}
	
	//檢查MAIL命令是否正常處理
	if (CheckResponse(MAIL_CHECK) == TFALSE) 
	{
		return TFALSE; 
	}
	else 
	{
		return TTRUE; 
	}
} 

// 發(fā)送TO命令信息
BOOL SetTo(SMTP struMail) 
{ 
	char buf[256]; 
	memset(buf, 0, 256);	
	sprintf (buf, "RCPT TO:<%s>\r\n", struMail.m_strSendTo); 
	
	//發(fā)送TO命令
	if(SendDate(buf, strlen (buf)) == TFALSE)
	{
		return TFALSE; 
	}
	
	//檢查T(mén)O命令是否正常處理
	if (CheckResponse(RCPT_CHECK) == TFALSE) 
	{
		return TFALSE; 
	}
	
	return TTRUE; 	
} 

// 發(fā)送"DATA" 命令到 SMTP 服務(wù)器: 
//進(jìn)行擴(kuò)展,可以發(fā)送文件
BOOL Data(SMTP struMail) 
{ 
	char buf[256];
	//char* Subject = NULL;
	//char* Body = NULL;
	//char* strFileName = NULL;
	
	memset(buf, 0, 256);
	
	//發(fā)送DATA命令
	sprintf(buf, "DATA\r\n"); 	
	SendDate(buf, strlen (buf)); 

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲女爱视频在线| 在线播放中文一区| 久久久久97国产精华液好用吗| 日韩精品五月天| 欧美精品xxxxbbbb| 粉嫩av一区二区三区粉嫩| 国产精品欧美一区二区三区| 99在线热播精品免费| 夜夜精品视频一区二区 | 五月婷婷综合激情| 91精品国产色综合久久ai换脸| 日韩黄色片在线观看| 国产精品久久777777| 在线观看不卡视频| 蜜桃在线一区二区三区| 国产欧美日韩不卡免费| 日本乱人伦aⅴ精品| 免费视频一区二区| 中文字幕欧美日本乱码一线二线| 99精品热视频| 日本不卡一二三| 亚洲一区二区免费视频| 精品精品国产高清a毛片牛牛| 成人免费毛片嘿嘿连载视频| 亚洲高清不卡在线| 国产人成一区二区三区影院| 日韩丝袜美女视频| 91免费版在线| 老汉av免费一区二区三区| 欧美国产成人在线| 久久久久久久久久久久久夜| 欧美一级高清片| 91精品国产综合久久久蜜臀粉嫩| 国产精品自拍在线| 亚洲成人免费视频| 中文av一区二区| 国产欧美日韩在线视频| 久久久久久久久久久久电影 | 成人av免费网站| 日韩激情视频在线观看| 午夜精品久久久久久久99水蜜桃| 一区二区三区欧美激情| 亚洲精品免费看| 国产午夜亚洲精品羞羞网站| 欧美日韩久久久一区| 成人激情黄色小说| 成人免费视频视频在线观看免费 | 91精品蜜臀在线一区尤物| 欧美日韩国产综合视频在线观看| 欧美无砖专区一中文字| 粉嫩一区二区三区性色av| 国产成人免费av在线| 免费成人结看片| 国内成+人亚洲+欧美+综合在线| 夜夜亚洲天天久久| 午夜精品一区二区三区免费视频| 亚瑟在线精品视频| 美日韩一级片在线观看| 国产精品一区二区视频| 国产成人免费视频精品含羞草妖精| 国产精品资源在线| 91在线免费视频观看| 精品视频色一区| 91高清在线观看| 91精品国产日韩91久久久久久| 欧美tickling网站挠脚心| 69久久夜色精品国产69蝌蚪网| 日韩欧美中文字幕精品| 日本一区二区三区四区| 亚洲手机成人高清视频| 国产精品伦理一区二区| 玉米视频成人免费看| 日韩精品一级二级| 国产高清不卡一区| 色8久久精品久久久久久蜜| 欧美一区二区三区成人| 国产精品视频免费看| 亚洲国产精品久久一线不卡| 韩国理伦片一区二区三区在线播放| 成人小视频在线| 欧美一区二区三区男人的天堂| 国产日韩精品视频一区| 亚洲国产人成综合网站| 国产一区二区三区高清播放| 国产激情一区二区三区桃花岛亚洲| 99久久精品一区二区| 在线播放中文字幕一区| 国产精品人人做人人爽人人添| 亚洲综合激情网| 国产乱码精品一区二区三区忘忧草| 91视频国产观看| 精品国产制服丝袜高跟| 亚洲精品视频一区| 久久99精品国产麻豆婷婷| 紧缚捆绑精品一区二区| 欧美综合一区二区| 久久人人97超碰com| 亚洲一级在线观看| 成人精品免费看| 555www色欧美视频| 亚洲欧美激情在线| 国产乱码精品一区二区三| 欧美美女一区二区| 国产精品久久久久三级| 国模娜娜一区二区三区| 欧美日产国产精品| 国产精品美女久久久久久久| 久久精品99国产精品| 欧美午夜寂寞影院| 亚洲免费视频中文字幕| 国产精品一区二区在线观看不卡 | 精品一区二区三区在线观看国产 | 91片在线免费观看| 久久精品网站免费观看| 日本成人在线网站| 国产成人av电影在线| 日韩亚洲欧美一区二区三区| 亚洲精选一二三| 99久久精品免费看国产| 国产欧美日韩一区二区三区在线观看| 蜜桃免费网站一区二区三区| 51精品国自产在线| 亚洲国产cao| 欧美色图免费看| 亚洲精品国产精华液| 91亚洲永久精品| 亚洲天堂福利av| 99视频热这里只有精品免费| 国产偷国产偷亚洲高清人白洁| 国精品**一区二区三区在线蜜桃| 欧美一级在线免费| 奇米影视7777精品一区二区| 欧美日韩一区二区三区高清| 亚洲综合色噜噜狠狠| 色狠狠一区二区| 亚洲一区视频在线观看视频| 欧洲精品在线观看| 亚洲国产一区二区a毛片| 精品视频123区在线观看| 亚洲午夜精品在线| 制服丝袜亚洲播放| 免费观看一级欧美片| 日韩欧美在线观看一区二区三区| 男女性色大片免费观看一区二区| 欧美一区二区三区色| 久久成人精品无人区| 久久久久亚洲蜜桃| 不卡影院免费观看| 综合久久久久久久| 欧美网站大全在线观看| 午夜精品福利一区二区三区av| 在线观看91av| 狠狠久久亚洲欧美| 国产精品网曝门| 色婷婷精品久久二区二区蜜臀av| 久久久www成人免费毛片麻豆 | 色综合久久中文综合久久牛| 亚洲精品国产精品乱码不99 | 国产成人精品午夜视频免费| 国产清纯白嫩初高生在线观看91| 成人18视频在线播放| 亚洲国产色一区| 精品少妇一区二区三区日产乱码 | 亚洲欧美日韩国产中文在线| 在线视频一区二区免费| 美女视频免费一区| 国产精品网站在线| 欧美日韩和欧美的一区二区| 精品一区二区三区影院在线午夜| 国产精品视频在线看| 欧美在线一二三四区| 久久激情综合网| 自拍偷自拍亚洲精品播放| 欧美精品色综合| 国产91对白在线观看九色| 亚洲制服丝袜av| 2014亚洲片线观看视频免费| 麻豆极品一区二区三区| 日本一区二区三级电影在线观看| 在线观看一区二区精品视频| 久久精品国产一区二区| 自拍偷拍欧美精品| 日韩一区二区高清| 成人动漫在线一区| 免费成人av在线| 亚洲欧洲制服丝袜| 欧美电视剧免费观看| 国产在线观看免费一区| 亚洲激情中文1区| 精品国产三级电影在线观看| 91麻豆swag| 国产精华液一区二区三区| 午夜久久电影网| 国产精品福利一区二区| 日韩欧美中文字幕一区| 91久久精品一区二区三| 国产成都精品91一区二区三| 男男成人高潮片免费网站| 亚洲男人电影天堂| 中文久久乱码一区二区|