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

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

?? smtp.cpp

?? 用vc編寫的實現了SMTP和POP3協議的郵件服務器
?? CPP
字號:
// SMTP.cpp: implementation of the CSMTP class.
// Copyright (c) 1998, Wes Clyburn
//
// Adapted to modified CMailMessage class
// Copyright (c) 1998 Michael Krebs
//////////////////////////////////////////////////////////////////////

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

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

// Static member initializers
//

// Note: the order of the entries is important.
//       They must be synchronized with eResponse entries. 
CSMTP::response_code CSMTP::response_table[] =
{
	{ 250, "SMTP server error" },						// GENERIC_SUCCESS
	{ 220, "SMTP server not available" },				// CONNECT_SUCCESS
	{ 354, "SMTP server not ready for data" },			// DATA_SUCCESS
	{ 221, "SMTP server didn't terminate session" }  	// QUIT_SUCCESS
};


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

CSMTP::CSMTP( LPCTSTR szSMTPServerName, UINT nPort )
{
	ASSERT( szSMTPServerName != NULL );
	AfxSocketInit();
	m_sMailerName = _T( "WC Mail" );
	m_sSMTPServerHostName = szSMTPServerName;
	m_nPort = nPort;
	m_bConnected = FALSE;
	m_sError = _T( "OK" );
}

CSMTP::~CSMTP()
{
	if( m_bConnected )
		Disconnect();
}

CString CSMTP::GetServerHostName()
{
	return m_sSMTPServerHostName;
}

BOOL CSMTP::Connect()
{
	CString sHello;
	TCHAR local_host[ 80 ];	// Warning: arbitrary size
	if( m_bConnected )
		return TRUE;

	if( !m_wsSMTPServer.Create() )
	{
		m_sError = _T( "Unable to create the socket." );
		return FALSE;
	}
	if( !m_wsSMTPServer.Connect( GetServerHostName(), GetPort() ) )
	{
		m_sError = _T( "Unable to connect to server" );
		m_wsSMTPServer.Close();
		return FALSE;
	}
	if( !get_response( CONNECT_SUCCESS ) )
	{
		m_sError = _T( "Server didn't respond." );
		m_wsSMTPServer.Close();
		return FALSE;
	}
	gethostname( local_host, 80 );
	sHello.Format( "HELO %s\r\n", local_host );
	m_wsSMTPServer.Send( (LPCTSTR)sHello, sHello.GetLength() );
	if( !get_response( GENERIC_SUCCESS ) )
	{
		m_wsSMTPServer.Close();
		return FALSE;
	}
	m_bConnected = TRUE;
	return TRUE;
}

BOOL CSMTP::Disconnect()
{
	BOOL ret;
	if( !m_bConnected )
		return TRUE;
	// Disconnect gracefully from the server and close the socket
	CString sQuit = _T( "QUIT\r\n" );
	m_wsSMTPServer.Send( (LPCTSTR)sQuit, sQuit.GetLength() );

	// No need to check return value here.
	// If it fails, the message is available with GetLastError
	ret = get_response( QUIT_SUCCESS );
	m_wsSMTPServer.Close();

	m_bConnected = FALSE;
	return ret;
}

UINT CSMTP::GetPort()
{
	return m_nPort;
}

CString CSMTP::GetMailerName()
{
	return m_sMailerName;
}

CString CSMTP::GetLastError()
{
	return m_sError;
}

BOOL CSMTP::SendMessage(CMailMessage * msg)
{
	ASSERT( msg != NULL );
	if( !m_bConnected )
	{
		m_sError = _T( "Must be connected" );
		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->EncodeHeader() == FALSE )
	{
		return FALSE;
	}

	msg->EncodeBody();

	// Append a CR/LF to body if necessary.
	if( msg->m_sBody.Right( 2 ) != "\r\n" )
		msg->m_sBody += "\r\n";
	return TRUE;
}

void CSMTP::SetServerProperties( LPCTSTR sServerHostName, UINT nPort)
{
	ASSERT( sServerHostName != NULL );
	// Needs to be safe in non-debug too
	if( sServerHostName == NULL )
		return;
	m_sSMTPServerHostName = sServerHostName;
	m_nPort = nPort;
}


BOOL CSMTP::transmit_message(CMailMessage * msg)
{
	CString sFrom;
	CString sTo;
	CString sTemp;
	CString sEmail;

	ASSERT( msg != NULL );
	if( !m_bConnected )
	{
		m_sError = _T( "Must be connected" );
		return FALSE;
	}

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

	// Send the DATA command
	sTemp = "DATA\r\n";
	m_wsSMTPServer.Send( (LPCTSTR)sTemp, sTemp.GetLength() );
	if( !get_response( DATA_SUCCESS ) )
	{
		return FALSE;
	}
	// Send the header
	//
	m_wsSMTPServer.Send( (LPCTSTR)msg->m_sHeader, msg->m_sHeader.GetLength() );

	//Insert additional headers here !
	sTemp="X-Mailer: CSMTP class for MFC\r\n";
	m_wsSMTPServer.Send( (LPCTSTR)sTemp, sTemp.GetLength() );

	//Empty line
	sTemp="\r\n";
	m_wsSMTPServer.Send( (LPCTSTR)sTemp, sTemp.GetLength() );

	// Send the body
	//
	m_wsSMTPServer.Send( (LPCTSTR)msg->m_sBody, msg->m_sBody.GetLength() );

	// Signal end of data
	//
	sTemp = "\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;	// Shorthand

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


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久新电视剧免费观看| 日韩欧美一二区| 国内一区二区视频| 日韩av在线播放中文字幕| 国产精品网站一区| 中文一区一区三区高中清不卡| 欧美精品一区二区三区高清aⅴ| 日韩无一区二区| 日韩一区二区影院| 91精品在线免费观看| 欧美性一二三区| 欧美久久久久久久久| 在线成人午夜影院| 欧美一级片在线看| 亚洲精品一区二区三区影院| 久久精品视频一区二区| 国产日韩精品久久久| √…a在线天堂一区| 亚洲免费在线视频一区 二区| 一区二区三区四区国产精品| 视频一区欧美精品| 韩国三级在线一区| 97精品久久久午夜一区二区三区 | 亚洲尤物视频在线| 天堂成人国产精品一区| 狠狠色2019综合网| 成人动漫在线一区| 正在播放亚洲一区| 国产亚洲精品资源在线26u| 亚洲人成伊人成综合网小说| 亚洲一线二线三线视频| 精品一区二区三区在线视频| 不卡大黄网站免费看| 欧美日本一道本| 国产视频一区二区在线| 亚洲自拍欧美精品| 精品一区二区三区免费| 一本久道中文字幕精品亚洲嫩| 91精品综合久久久久久| 中文字幕欧美一区| 日本不卡视频在线| 99麻豆久久久国产精品免费| 欧美肥妇bbw| 亚洲天堂免费看| 国内精品视频666| 欧美综合视频在线观看| 国产视频亚洲色图| 日韩黄色免费网站| aa级大片欧美| 久久久久久麻豆| 日韩黄色免费电影| 欧美色图片你懂的| 中文字幕一区二区三区色视频 | 久久久久高清精品| 日韩国产在线观看| 92精品国产成人观看免费| 精品成人免费观看| 婷婷久久综合九色综合伊人色| kk眼镜猥琐国模调教系列一区二区 | 久久99最新地址| 欧美午夜影院一区| 亚洲靠逼com| 成人国产精品免费观看视频| 日韩视频免费观看高清完整版在线观看| 国产精品久久久久久久久免费桃花| 免费看黄色91| 欧美在线观看你懂的| 亚洲猫色日本管| av网站一区二区三区| 欧美激情资源网| 国产91高潮流白浆在线麻豆 | 国产人伦精品一区二区| 久久成人av少妇免费| 91精品午夜视频| 午夜视黄欧洲亚洲| 欧美亚洲国产bt| 亚洲成a人v欧美综合天堂| 欧美性色欧美a在线播放| 伊人色综合久久天天人手人婷| 成人黄色电影在线| 亚洲同性同志一二三专区| 91亚洲精品一区二区乱码| 亚洲天堂中文字幕| 在线观看欧美黄色| 日韩影院在线观看| 日韩小视频在线观看专区| 精品一区二区国语对白| 亚洲精品一区二区三区影院| 国产成人免费视频一区| 国产精品电影一区二区| 欧洲一区二区三区在线| 一区二区三区在线播| 欧美在线|欧美| 免费精品视频在线| 久久网站最新地址| www.99精品| 午夜影院久久久| 亚洲精品在线免费观看视频| 大陆成人av片| 亚洲大片一区二区三区| 日韩欧美一区电影| 成人精品电影在线观看| 亚洲最大成人网4388xx| 欧美一区二区私人影院日本| 国产乱子轮精品视频| 国产精品久久久久aaaa| 欧美色网一区二区| 久久爱另类一区二区小说| 国产精品久久久久久福利一牛影视| 91在线视频在线| 日韩精品亚洲专区| 国产精品天美传媒| 欧美日韩国产免费一区二区| 热久久一区二区| 国产精品久久久久9999吃药| 欧美一区二区国产| gogo大胆日本视频一区| 国产揄拍国内精品对白| 中文字幕一区二| 日韩三区在线观看| 91麻豆国产在线观看| 极品销魂美女一区二区三区| 一区二区三区在线观看动漫| 欧美不卡视频一区| 欧美午夜宅男影院| 成人av网在线| 国内外成人在线视频| 香港成人在线视频| 亚洲乱码国产乱码精品精98午夜| 2014亚洲片线观看视频免费| 欧美卡1卡2卡| 色婷婷久久综合| 成人午夜激情片| 国产在线不卡视频| 日韩电影在线观看电影| 一区二区三区在线观看视频| 国产精品久久久久影院色老大 | www.欧美精品一二区| 狠狠色综合播放一区二区| 五月天亚洲婷婷| 亚洲国产一区二区在线播放| 日韩美女精品在线| 国产精品久久精品日日| 国产三级精品三级| 久久精品夜夜夜夜久久| 欧美r级电影在线观看| 欧美精品粉嫩高潮一区二区| 91福利在线看| 在线观看欧美精品| 欧美中文字幕不卡| 色综合久久九月婷婷色综合| 99久久综合精品| 91一区二区三区在线播放| 91在线国产福利| 91在线看国产| 在线区一区二视频| 欧美综合在线视频| 欧美日韩成人综合天天影院 | 免费成人性网站| 美女脱光内衣内裤视频久久网站| 日本不卡高清视频| 久久国产精品第一页| 狠狠v欧美v日韩v亚洲ⅴ| 国产一区久久久| 丁香桃色午夜亚洲一区二区三区| 丁香婷婷综合网| 色偷偷成人一区二区三区91| 在线一区二区三区四区| 欧美福利视频一区| 精品久久久久久最新网址| 2021国产精品久久精品| 国产欧美一区二区三区在线看蜜臀| 国产精品午夜久久| 亚洲乱码日产精品bd| 午夜精品久久久久久久99水蜜桃| 色综合视频在线观看| 在线免费观看日韩欧美| 久久蜜桃av一区精品变态类天堂| 欧美大片在线观看| 亚洲乱码国产乱码精品精98午夜| 亚洲一区二区三区四区不卡| 蜜桃视频一区二区| 成人性生交大片免费看视频在线| 色国产综合视频| 精品入口麻豆88视频| 中文字幕在线一区免费| 日韩精品乱码免费| 成人av手机在线观看| 欧美日韩成人在线一区| 午夜精品免费在线| 国产一区二区三区免费在线观看| 久久99精品一区二区三区| 成人免费观看男女羞羞视频| 欧美日本一区二区在线观看| 久久久久国产一区二区三区四区 | 欧美性色黄大片| 一区二区三区欧美日| 91视频一区二区三区| 1024成人网| 欧美在线观看一二区|