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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? smtp.cpp

?? 這是用VC+Acess做的個人電子通訊管理系統
?? CPP
字號:
// SMTP.cpp: implementation of the CSMTP class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "SMTP.h"

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

CSMTP::response_code CSMTP::response_table[] =
{
	// GENERIC_SUCCESS
	{ 250, _T( "SMTP服務器錯誤" ) },
	// CONNECT_SUCCESS
	{ 220, _T( "SMTP服務器不可用" ) },
	// DATA_SUCCESS
	{ 354, _T( "SMTP服務器不能接收數據" ) },
	// QUIT_SUCCESS
	{ 221, _T( "SMTP沒有中止會話" ) }
};

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

CSMTP::CSMTP( LPCTSTR szSMTPServerName, UINT nPort )
{
	ASSERT( szSMTPServerName != NULL );
	AfxSocketInit();    //初始化Windows Sockets類的使用
	m_sSMTPServerHostName = szSMTPServerName;
	m_nPort = nPort;
	m_bConnected = FALSE;
	m_sError = _T( "OK" );
	response_buf = NULL;
}

CSMTP::~CSMTP()
{
	Disconnect();   //斷開連接
}

CString CSMTP::GetServerHostName()
{
	return m_sSMTPServerHostName;
}
//建立到服務器的連接
BOOL CSMTP::Connect()
{
	CString sHello;
	TCHAR local_host[ 80 ];
	if( m_bConnected )
		return TRUE;
	
	try
	{
		response_buf = new TCHAR[ RESPONSE_BUFFER_SIZE ];

		if( response_buf == NULL )
		{
			m_sError = _T( "內存不足!" );
			return FALSE;
		}
	}
	catch( CException *e )    //使用基類進行捕捉
	{      
		response_buf = NULL;
		m_sError = _T( "內存不足!" );
		delete e;
		return FALSE;
	}

	if( !m_wsSMTPServer.Create() )
	{
		m_sError = _T( "無法創建套接字!" );
		delete response_buf;
		response_buf = NULL;
		return FALSE;
	}
	if( !m_wsSMTPServer.Connect( GetServerHostName(), GetPort() ) )
	{
		m_sError = _T( "無法連接到服務器" );
		m_wsSMTPServer.Close();
		delete response_buf;
		response_buf = NULL;
		return FALSE;
	}
	if( !get_response( CONNECT_SUCCESS ) )  
	{
		m_sError = _T( "服務器沒有響應" );
		m_wsSMTPServer.Close();
		delete response_buf;
		response_buf = NULL;
		return FALSE;
	}
	gethostname( local_host, 80 );   //得到本地機器標準主機名
	sHello.Format( _T( "HELO %s\r\n" ), local_host );
	m_wsSMTPServer.Send( (LPCTSTR)sHello, sHello.GetLength() );  //建立連接后發送數據
	if( !get_response( GENERIC_SUCCESS ) )
	{
		m_wsSMTPServer.Close();
		delete response_buf;
		response_buf = NULL;
		return FALSE;
	}
	m_bConnected = TRUE;
	return TRUE;
}
//斷開連接
BOOL CSMTP::Disconnect()
{
	BOOL ret;
	if( !m_bConnected )
		return TRUE;
	CString sQuit = _T( "QUIT\r\n" );
	m_wsSMTPServer.Send( (LPCTSTR)sQuit, sQuit.GetLength() );

	ret = get_response( QUIT_SUCCESS );
	m_wsSMTPServer.Close();

	if( response_buf != NULL )
	{
		delete[] response_buf;
		response_buf = NULL;
	}

	m_bConnected = FALSE;
	return ret;
}
//取得SMTP服務器端口號
UINT CSMTP::GetPort()
{
	return m_nPort;
}
//取得錯誤信息
CString CSMTP::GetLastError()
{
	return m_sError;
}
//發郵件到服務器
BOOL CSMTP::SendMessage(CMailMessage * msg)
{
	ASSERT( msg != NULL );
	if( !m_bConnected )
	{
		m_sError = _T( "必須首先創建連接!" );
		return FALSE;
	}
	if( FormatMailMessage( msg ) == FALSE )
	{
		return FALSE;
	}
	if( transmit_message( msg ) == FALSE )
	{
		return FALSE;
	}
	return TRUE;
}
//格式化郵件信息
BOOL CSMTP::FormatMailMessage( CMailMessage* msg )
{
	ASSERT( msg != NULL );
	if( msg->GetNumRecipients() == 0 )
	{
		m_sError = _T( "No Recipients" );
		return FALSE;
	}
	msg->FormatMessage();
	return TRUE;
}
//配置服務器
void CSMTP::SetServerProperties( LPCTSTR szSMTPServerName, UINT nPort)
{
	ASSERT( szSMTPServerName != NULL );
	if( szSMTPServerName == NULL )
		return;
	m_sSMTPServerHostName = szSMTPServerName;
	m_nPort = nPort;
}

//獲得郵件體得到發送內容
CString CSMTP::cook_body(CMailMessage * msg)
{
	ASSERT( msg != NULL );
	CString sTemp;
	CString sCooked = _T( "" );
	LPTSTR szBad = _T( "\r\n.\r\n" );
	LPTSTR szGood = _T( "\r\n..\r\n" );
	int nPos;
	int nStart = 0;
	int nBadLength = strlen( szBad );
	sTemp = msg->m_sBody;
	if( sTemp.Left( 3 ) == _T( ".\r\n" ) )
		sTemp = _T( "." ) + sTemp;
	while( (nPos = sTemp.Find( szBad )) > -1 )
	{
		sCooked = sTemp.Mid( nStart, nPos );
		sCooked += szGood;
		sTemp = sCooked + sTemp.Right( sTemp.GetLength() - (nPos + nBadLength) );
	}
	return sTemp;
}
//發送郵件
BOOL CSMTP::transmit_message(CMailMessage * msg)
{
	CString sFrom;
	CString sTo;
	CString sTemp;
	CString sEmail;
    CString sSubject;

	ASSERT( msg != NULL );
	if( !m_bConnected )
	{
		m_sError = _T( "必須首先創建連接!" );
		return FALSE;
	}

	sFrom.Format( _T( "MAIL From: <%s>\r\n" ), (LPCTSTR)msg->m_sFrom );
	m_wsSMTPServer.Send( (LPCTSTR)sFrom, sFrom.GetLength() );
	if( !get_response( GENERIC_SUCCESS ) )
		return FALSE;
	
	for( int i = 0; i < msg->GetNumRecipients(); i++ )
	{
		msg->GetRecipient( sEmail, sTemp, i );
		sTo.Format( _T( "RCPT TO: <%s>\r\n" ), (LPCTSTR)sEmail );
		m_wsSMTPServer.Send( (LPCTSTR)sTo, sTo.GetLength() );
		get_response( GENERIC_SUCCESS );
	}


	sTemp = _T( "DATA\r\n" );
	m_wsSMTPServer.Send( (LPCTSTR)sTemp, sTemp.GetLength() );
	if( !get_response( DATA_SUCCESS ) )
	{
		return FALSE;
	}

	sSubject.Format( _T( "SUBJECT: <%s>\r\n" ), (LPCTSTR)msg->m_sSubject );
	m_wsSMTPServer.Send( (LPCTSTR)sSubject, sSubject.GetLength() );

//	m_wsSMTPServer.Send( (LPCTSTR)msg->m_sHeader, msg->m_sHeader.GetLength() );

	sTemp = cook_body( msg );
	m_wsSMTPServer.Send( (LPCTSTR)sTemp, sTemp.GetLength() );

	sTemp = _T( "\r\n.\r\n" );
	m_wsSMTPServer.Send( (LPCTSTR)sTemp, sTemp.GetLength() );
	if( !get_response( GENERIC_SUCCESS ) )
	{
		return FALSE;
	}
	return TRUE;
}
//得到服務器響應
BOOL CSMTP::get_response( UINT response_expected )
{
	ASSERT( response_expected >= GENERIC_SUCCESS );
	ASSERT( response_expected < LAST_RESPONSE );

	CString sResponse;
	UINT response;
	response_code* pResp;

	if( m_wsSMTPServer.Receive( response_buf, RESPONSE_BUFFER_SIZE ) == SOCKET_ERROR )
	{
		m_sError = _T( "套接字錯誤!" );
		return FALSE;
	}
	sResponse = response_buf;
	sscanf( (LPCTSTR)sResponse.Left( 3 ), _T( "%d" ), &response );
	pResp = &response_table[ response_expected ];
	if( response != pResp->nResponse )
	{
		m_sError.Format( _T( "%d:%s" ), response, (LPCTSTR)pResp->sMessage );
		return FALSE;
	}
	return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产伦精品一区二区三区免费| 91在线小视频| 处破女av一区二区| 欧洲精品一区二区| 久久先锋资源网| 亚洲五码中文字幕| av中文字幕亚洲| 精品国产99国产精品| 亚洲成a人v欧美综合天堂下载| 国产精品一区二区三区四区| 91精品国产91综合久久蜜臀| 亚洲你懂的在线视频| 成人在线视频一区| 精品欧美一区二区三区精品久久| 亚洲电影激情视频网站| 91美女精品福利| 欧美国产亚洲另类动漫| 国产精品系列在线播放| 久久影院午夜片一区| 男人操女人的视频在线观看欧美| 91成人国产精品| 亚洲欧美激情在线| 91丝袜美女网| 成人免费一区二区三区视频| 成人免费电影视频| 国产精品成人免费| 成人福利电影精品一区二区在线观看 | 三级在线观看一区二区| 色综合中文字幕| 亚洲精品精品亚洲| 在线影院国内精品| 一区二区三区资源| 欧美在线视频日韩| 亚洲成人黄色影院| 91精品国产高清一区二区三区| 日韩精品乱码av一区二区| 欧美无乱码久久久免费午夜一区| 亚洲一区二区精品视频| 欧美日本免费一区二区三区| 天堂精品中文字幕在线| 91精品国产免费| 久草精品在线观看| 国产亚洲福利社区一区| 成人免费av网站| 一区二区三区免费看视频| 欧美性视频一区二区三区| 午夜精品久久久久久久| 日韩女同互慰一区二区| 国产成人免费xxxxxxxx| 中文子幕无线码一区tr| 色婷婷综合五月| 爽好多水快深点欧美视频| 欧美电影免费观看完整版| 国产资源在线一区| 国产精品理论在线观看| 欧美日韩中文国产| 美女视频免费一区| 中文字幕成人av| 欧美亚洲精品一区| 精品一二线国产| 中文字幕在线不卡视频| 欧美日韩免费观看一区三区| 久久爱另类一区二区小说| 国产精品美女久久久久aⅴ国产馆| 日本乱人伦aⅴ精品| 日韩激情中文字幕| 国产欧美一区二区三区鸳鸯浴 | 日韩中文字幕不卡| 久久久精品欧美丰满| 一本久久a久久免费精品不卡| 免费看日韩a级影片| 国产精品蜜臀在线观看| 欧美日本韩国一区二区三区视频| 国产精品亚洲视频| 亚洲已满18点击进入久久| 久久综合国产精品| 欧美在线看片a免费观看| 国产一区二区视频在线| 五月综合激情婷婷六月色窝| 国产欧美日韩精品一区| 日韩一区二区免费在线电影| 色婷婷综合久久久久中文| 极品美女销魂一区二区三区| 亚洲精品免费电影| 中文字幕精品综合| 欧美xxxx在线观看| 欧美无乱码久久久免费午夜一区| 狠狠色2019综合网| 婷婷综合五月天| 亚洲日本在线看| 久久精品日产第一区二区三区高清版 | 欧美一级生活片| 日本韩国欧美在线| 懂色av一区二区夜夜嗨| 久久99精品久久久久久久久久久久| 亚洲女同一区二区| 国产精品污网站| 久久午夜羞羞影院免费观看| 91.xcao| 欧美喷水一区二区| 欧美亚洲国产怡红院影院| 99久久精品国产观看| 成人一级片网址| 国产精品一区二区在线观看网站| 精品一区二区久久| 麻豆一区二区三| 久久成人av少妇免费| 蜜桃视频在线一区| 免费一级欧美片在线观看| 亚洲电影在线免费观看| 亚洲国产另类精品专区| 亚洲午夜精品久久久久久久久| 一区二区三区在线观看国产 | 国产日产欧产精品推荐色| 日韩欧美国产成人一区二区| 日韩欧美国产1| 日韩一区二区三| 久久网这里都是精品| 国产丝袜美腿一区二区三区| 久久久一区二区三区捆绑**| 国产丝袜美腿一区二区三区| 欧美精彩视频一区二区三区| 国产精品久久久久久久久免费樱桃| 中文字幕在线一区免费| 成人免费视频在线观看| 一区二区三区中文免费| 亚洲一区二区美女| 美国十次综合导航| 国产东北露脸精品视频| 99国产精品99久久久久久| 色哟哟在线观看一区二区三区| 欧美在线免费观看亚洲| 欧美一二区视频| 国产日韩一级二级三级| 中文字幕一区二区三区在线观看| 亚洲一区视频在线观看视频| 久久精品国产99久久6| 国产综合成人久久大片91| 国产成人午夜高潮毛片| 91亚洲午夜精品久久久久久| 在线播放/欧美激情| 亚洲精品一区二区三区影院| 国产精品的网站| 一区二区三区日韩| 蜜桃视频免费观看一区| 国产高清精品久久久久| 色爱区综合激月婷婷| 欧美电影免费观看完整版| 中文字幕在线不卡一区| 蜜臀91精品一区二区三区| 成人aa视频在线观看| 欧美一区二区三区四区视频| 国产三级欧美三级日产三级99| 一区2区3区在线看| 国产一本一道久久香蕉| 色综合咪咪久久| 欧美大片拔萝卜| 一区二区三区欧美日| 国产精品夜夜爽| 在线播放91灌醉迷j高跟美女 | 成人午夜免费电影| 欧美一区午夜视频在线观看| 国产精品国产三级国产| 日韩成人午夜精品| 色域天天综合网| 国产精品午夜在线观看| 亚洲国产精品欧美一二99| 国产999精品久久久久久| 欧美精品xxxxbbbb| 亚洲欧美日韩电影| 国产一区二区三区免费| 777奇米四色成人影色区| 亚洲精品欧美综合四区| 成人免费观看视频| 久久蜜桃一区二区| 石原莉奈一区二区三区在线观看| 色婷婷精品大在线视频| 欧美国产精品一区二区三区| 久久99九九99精品| 欧美日韩电影在线| 亚洲综合丝袜美腿| 99精品欧美一区二区三区小说 | 亚洲国产精品影院| 色欧美片视频在线观看| 国产精品久久久久久久裸模| 国产福利一区二区三区视频在线 | av亚洲精华国产精华| 久久女同性恋中文字幕| 国产成人午夜精品影院观看视频 | 欧美aaaaa成人免费观看视频| 91久久久免费一区二区| 18涩涩午夜精品.www| 东方欧美亚洲色图在线| 久久精品无码一区二区三区| 国产在线精品一区二区夜色| 欧美电影在线免费观看| 天涯成人国产亚洲精品一区av| 欧美视频三区在线播放| 亚洲h在线观看| 制服丝袜日韩国产|