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

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

?? smtp.cpp

?? 網絡編程實例
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
	{
	  AfxMessageBox("不能連接服務器");
    }
	else
    {  
      AfxMessageBox("不能連接服務器");
	}
	return FALSE;
  }
  else
  {
    //連接成功
    m_bConnected = TRUE;

    //獲得相應
    if (!ReadCommandResponse(220))
    {
      TRACE(_T("An unexpected SMTP login response was received\n"));
      Disconnect();
      return FALSE;
    }

	    //獲得本地機器名
		if (m_sHeloHostname == _T("auto"))
		{
			//獲得主機名
			char sHostName[100];
			gethostname(sHostName, sizeof(sHostName));
			TCHAR* pszHostName = A2T(sHostName);
			m_sHeloHostname = pszHostName;
		}

	  // 進行下一步連接,即進行SMTP會話
	  BOOL bConnectOk = FALSE;
	  if (lm != NoLoginMethod)
		  bConnectOk = ConnectESMTP(m_sHeloHostname, pszUsername, pszPassword, lm);
	  else
		  bConnectOk = ConnectSMTP(m_sHeloHostname);

	  // 如果失敗,則斷開連接
	  if (!bConnectOk)
	  {
      Disconnect();
      return FALSE;
	  }

    return TRUE;
  }
}

// 該函數是通過擴展SMTP會話方式連接服務器的
BOOL CSMTPConnection::ConnectESMTP(LPCTSTR pszLocalName, LPCTSTR pszUsername, LPCTSTR pszPassword, LoginMethod lm)
{
  //驗證參數
	ASSERT(pszUsername);
	ASSERT(pszPassword);
	ASSERT(lm != NoLoginMethod);

	USES_CONVERSION;

	//發送EHLO命令
	CString sBuf;
	sBuf.Format(_T("EHLO %s\r\n"), pszLocalName);
	LPCSTR pszData = T2A((LPTSTR) (LPCTSTR) sBuf);
	int nCmdLength = strlen(pszData);
	if (!m_SMTP.Send(pszData, nCmdLength))
	{
		return FALSE;
	}
	
	//檢查Hello命令的響應
	if (!ReadCommandResponse(250))
	{
		return FALSE;
	}

	BOOL bLoginOk = FALSE;
	switch (lm)
	{
    #ifndef CSMTP_NORSA
    case CramMD5Method:
    {
      bLoginOk = CramLogin(pszUsername, pszPassword); // CRAM-MD5 authentication
      break;
    }
    #endif
    case AuthLoginMethod:
    {
      bLoginOk = AuthLogin(pszUsername, pszPassword); // LOGIN authentication
      break;
    }
    case LoginPlainMethod:
    {
      bLoginOk = AuthLoginPlain(pszUsername, pszPassword); // PLAIN authentication
      break;
    }
    default:
    {
      ASSERT(FALSE);
      break;
    }
  }
	return bLoginOk;
}

// This function connects using standard SMTP connection i.e. HELO
BOOL CSMTPConnection::ConnectSMTP(LPCTSTR pszLocalName)
{
	//For correct operation of the T2A macro, see MFC Tech Note 59
	USES_CONVERSION;

  //Send the HELO command
	CString sBuf;
	sBuf.Format(_T("HELO %s\r\n"), pszLocalName);
	LPCSTR pszData = T2A((LPTSTR) (LPCTSTR) sBuf);
	int nCmdLength = strlen(pszData);
	if (!m_SMTP.Send(pszData, nCmdLength))
	{
	  TRACE(_T("An unexpected error occurred while sending the HELO command\n"));
	  return FALSE;
	}
//check the response to the HELO command
	return ReadCommandResponse(250);
}

BOOL CSMTPConnection::Disconnect()
{
  BOOL bSuccess = FALSE;      

  //disconnect from the SMTP server if connected 
  if (m_bConnected)
  {
    char sBuf[10];
    strcpy(sBuf, "QUIT\r\n");
    int nCmdLength = strlen(sBuf);
    if (!m_SMTP.Send(sBuf, nCmdLength))
      TRACE(_T("Failed in call to send QUIT command, GetLastError returns: %d\n"), GetLastError());

    //Check the reponse
    bSuccess = ReadCommandResponse(221);
    if (!bSuccess)
    {
      SetLastError(ERROR_BAD_COMMAND);
      TRACE(_T("An unexpected QUIT response was received\n"));
    }

    //Reset all the state variables
    m_bConnected = FALSE;
  }
  else
    TRACE(_T("Already disconnected from SMTP server, doing nothing\n"));
 
  //free up our socket
  m_SMTP.Close();
 
  return bSuccess;
}

BOOL CSMTPConnection::SendBodyPart(CSMTPBodyPart* pBodyPart, BOOL bRoot)
{
  //Assume success
  BOOL bSuccess = TRUE;

  if (!bRoot)
  {
    //發送信件頭
    LPSTR pszHeader = NULL;
    int nHeaderSize = 0;
    if (!pBodyPart->GetHeader(pszHeader, nHeaderSize))
    {
		  TRACE(_T("Failed in call to send body parts header, GetLastError returns: %d\n"), GetLastError());
		  return FALSE;
    }
		if (!m_SMTP.Send(pszHeader, nHeaderSize))
		{
			bSuccess = FALSE;
		}
    //釋放空間
    pBodyPart->FreeHeader(pszHeader);
  }
  
  //根信體內容
  LPSTR pszBody = NULL;
  int nBodySize = 0;
  if (!pBodyPart->GetBody(pszBody, nBodySize))
  {
		TRACE(_T("Failed in call to send body parts body, GetLastError returns: %d\n"), GetLastError());
		return FALSE;
  }
	if (!m_SMTP.Send(pszBody, nBodySize))
	{
		TRACE(_T("Failed in call to send body parts body, GetLastError returns: %d\n"), GetLastError());
		bSuccess = FALSE;
	}
  //釋放內存空間
  pBodyPart->FreeBody(pszBody);

  //發送附件
  int nChildBodyParts = pBodyPart->GetNumberOfChildBodyParts();
  for (int i=0; i<nChildBodyParts && bSuccess; i++)
  {
    CSMTPBodyPart* pChildBodyPart = pBodyPart->GetChildBodyPart(i);
    bSuccess = SendBodyPart(pChildBodyPart, FALSE);
  }

  //發送發送MINE結束部分
  BOOL bSendFooter = (pBodyPart->GetNumberOfChildBodyParts() != 0);
  if (bSendFooter)
  {
    LPSTR pszFooter = NULL;
    int nFooterSize = 0;
    if (!pBodyPart->GetFooter(pszFooter, nFooterSize))
    {
		  return FALSE;
    }
	  if (!m_SMTP.Send(pszFooter, nFooterSize))
	  {
		  bSuccess = FALSE;
	  }
    //釋放內存
    pBodyPart->FreeFooter(pszFooter);
  }
  
  return bSuccess;
}

BOOL CSMTPConnection::SendMessage(CSMTPMessage& Message)
{
	USES_CONVERSION;

	ASSERT(m_bConnected); 

	//發送Email命令
	ASSERT(Message.m_From.m_sEmailAddress.GetLength());
	CString sBuf;
	sBuf.Format(_T("MAIL FROM:<%s>\r\n"), Message.m_From.m_sEmailAddress);
	LPCSTR pszMailFrom = T2A((LPTSTR) (LPCTSTR) sBuf);
	int nCmdLength = strlen(pszMailFrom);
	if (!m_SMTP.Send(pszMailFrom, nCmdLength))
	{
		TRACE(_T("Failed in call to send MAIL command, GetLastError returns: %d\n"), GetLastError());
		return FALSE;
	}

	//檢查服務器響應
	if (!ReadCommandResponse(250))
	{
		SetLastError(ERROR_BAD_COMMAND);
		TRACE(_T("An unexpected MAIL response was received\n"));
		return FALSE;
	} 

	//發送RCPT命令,每一個接受者都需要發送一次

	//必須有收信人
	ASSERT(Message.GetNumberOfRecipients(CSMTPMessage::TO) + 
         Message.GetNumberOfRecipients(CSMTPMessage::CC) + 
         Message.GetNumberOfRecipients(CSMTPMessage::BCC));

	//首先"TO"發送接收者
	for (int i=0; i<Message.GetNumberOfRecipients(CSMTPMessage::TO); i++)
	{
		CSMTPAddress* pRecipient = Message.GetRecipient(i, CSMTPMessage::TO);
		ASSERT(pRecipient);
		if (!SendRCPTForRecipient(*pRecipient))
		return FALSE;
	}

	//然后是 "CC" 接收者
	for (i=0; i<Message.GetNumberOfRecipients(CSMTPMessage::CC); i++)
	{
		CSMTPAddress* pRecipient = Message.GetRecipient(i, CSMTPMessage::CC);
		ASSERT(pRecipient);
		if (!SendRCPTForRecipient(*pRecipient))
			return FALSE;
	}

	//然后是"BCC" 接收者 
	for (i=0; i<Message.GetNumberOfRecipients(CSMTPMessage::BCC); i++)
	{
		CSMTPAddress* pRecipient = Message.GetRecipient(i, CSMTPMessage::BCC);
		ASSERT(pRecipient);
		if (!SendRCPTForRecipient(*pRecipient))
			return FALSE;
	}

	//發送DATA命令
	char* pszDataCommand = "DATA\r\n";
	nCmdLength = strlen(pszDataCommand);
	if (!m_SMTP.Send(pszDataCommand, nCmdLength))
	{
		TRACE(_T("Failed in call to send MAIL command, GetLastError returns: %d\n"), GetLastError());
		return FALSE;
	}

	//檢查DATA命令的響應
	if (!ReadCommandResponse(354))
	{
		SetLastError(ERROR_BAD_COMMAND);
		TRACE(_T("An unexpected DATA response was received\n"));
		return FALSE;
	} 

	//發送信息頭
	CString sHeader = Message.GetHeader();
	char* pszHeader = T2A((LPTSTR) (LPCTSTR) sHeader);
	nCmdLength = strlen(pszHeader);
	if (!m_SMTP.Send(pszHeader, nCmdLength))
	{
		TRACE(_T("Failed in call to send the header, GetLastError returns: %d\n"), GetLastError());
		return FALSE;
	}

	BOOL bHasChildParts = (Message.m_RootPart.GetNumberOfChildBodyParts() != 0);
	if (bHasChildParts || Message.m_bMime)
	{
		//發送信件內容
		if(!SendBodyPart(&Message.m_RootPart, TRUE))
		return FALSE;
	}
	else
	{
		//Send the Header for the body (Note in the case of non mime emails, it is just a simple line separaror
		char* pszBodyHeader = "\r\n";
		nCmdLength = strlen(pszBodyHeader);
		if (!m_SMTP.Send(pszBodyHeader, nCmdLength))
		{
			TRACE(_T("Failed in call to send the body header, GetLastError returns: %d\n"), GetLastError());
			return FALSE;
		}

		char* pszBody = T2A((LPTSTR) (LPCTSTR) Message.m_RootPart.GetText());
		ASSERT(pszBody);
		nCmdLength = strlen(pszBody);

		//發送信體
		if (!m_SMTP.Send(pszBody, nCmdLength))
		{
		TRACE(_T("Failed in call to send the header, GetLastError returns: %d\n"), GetLastError());
		return FALSE;
		}
	}

	//發送郵件結束指示符
	char* pszEOM = "\r\n.\r\n";
	nCmdLength = strlen(pszEOM);
	if (!m_SMTP.Send(pszEOM, nCmdLength))
	{
		TRACE(_T("Failed in call to send end of message indicator, GetLastError returns: %d\n"), GetLastError());
		return FALSE;
	}

	//檢查結束符響應
	if (!ReadCommandResponse(250))
	{
		SetLastError(ERROR_BAD_COMMAND);
		TRACE(_T("An unexpected end of message response was received\n"));
		return FALSE;
	} 

	return TRUE;
}

BOOL CSMTPConnection::OnSendProgress(DWORD /*dwCurrentBytes*/, DWORD /*dwTotalBytes*/)
{
  //By default just return TRUE to allow the mail to continue to be sent
  return TRUE; 
}

BOOL CSMTPConnection::SendMessage(BYTE* pMessage, DWORD dwTotalBytes, CSMTPAddressArray& Recipients, const CSMTPAddress& From, DWORD dwSendBufferSize)
{
	//For correct operation of the T2A macro, see MFC Tech Note 59
	USES_CONVERSION;

	//paramater validity checking
  ASSERT(m_bConnected); //Must be connected to send a message

  //Send the MAIL command
	ASSERT(From.m_sEmailAddress.GetLength());
  CString sBuf;
  sBuf.Format(_T("MAIL FROM:<%s>\r\n"), From.m_sEmailAddress);
  LPCSTR pszMailFrom = T2A((LPTSTR) (LPCTSTR) sBuf);
  int nCmdLength = strlen(pszMailFrom);
  if (!m_SMTP.Send(pszMailFrom, nCmdLength))
  {
    TRACE(_T("Failed in call to send MAIL command, GetLastError returns: %d\n"), GetLastError());
    return FALSE;
  }

  //check the response to the MAIL command
  if (!ReadCommandResponse(250))
  {
    SetLastError(ERROR_BAD_COMMAND);
    TRACE(_T("An unexpected MAIL response was received\n"));
    return FALSE;
  } 

  //Must be sending to someone
  int nRecipients = Recipients.GetSize();
  ASSERT(nRecipients);

  //Send the RCPT command, one for each recipient
  for (int i=0; i<nRecipients; i++)
  {
    CSMTPAddress& recipient = Recipients.ElementAt(i);
    if (!SendRCPTForRecipient(recipient))
      return FALSE;
  }

  //Send the DATA command
  char* pszDataCommand = "DATA\r\n";
  nCmdLength

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩亚洲综合在线 | 欧美美女bb生活片| 一区二区三区自拍| 在线观看亚洲专区| 日韩精品国产精品| 26uuuu精品一区二区| 成人综合婷婷国产精品久久免费| 欧美高清在线视频| av中文字幕在线不卡| 一区二区久久久| 91精品一区二区三区在线观看| 久久国产精品无码网站| 国产亚洲人成网站| 色噜噜偷拍精品综合在线| 日本强好片久久久久久aaa| 久久日韩精品一区二区五区| 成人免费毛片a| 丝瓜av网站精品一区二区| 2021国产精品久久精品| 99re这里只有精品首页| 日韩国产欧美在线播放| 欧美激情一二三区| 欧美男男青年gay1069videost| 国内精品写真在线观看| 亚洲日本在线天堂| 精品91自产拍在线观看一区| av不卡免费在线观看| 午夜成人免费电影| 中文成人综合网| 9191精品国产综合久久久久久| 国产一区二区成人久久免费影院| 亚洲日本电影在线| 欧美精品一区男女天堂| 在线一区二区视频| 国产高清亚洲一区| 日韩va亚洲va欧美va久久| 欧美激情一区二区三区全黄| 3d成人h动漫网站入口| 99久久99久久精品免费观看| 精品一区二区三区在线视频| 一区二区久久久久久| 国产欧美一区二区三区网站| 欧美日韩国产一区| 色网综合在线观看| 国产一区二区剧情av在线| 日韩精品成人一区二区三区| 国产精品每日更新| 26uuu亚洲综合色欧美| 欧美人成免费网站| 91精品办公室少妇高潮对白| 国产福利电影一区二区三区| 美腿丝袜亚洲一区| 偷拍亚洲欧洲综合| 一区二区三区在线观看国产| 亚洲国产精品高清| 2020国产成人综合网| 欧美一级片免费看| 欧美色网站导航| 在线观看区一区二| 色视频一区二区| 91蜜桃视频在线| 99久久久国产精品免费蜜臀| 国产精品888| 国产一区二区三区蝌蚪| 久久爱另类一区二区小说| 午夜国产精品一区| 丝袜诱惑亚洲看片| 日韩av中文字幕一区二区三区 | 91成人网在线| 色综合一区二区| 色域天天综合网| 色婷婷香蕉在线一区二区| jizz一区二区| 91蝌蚪porny| 在线亚洲欧美专区二区| 色婷婷激情一区二区三区| 91麻豆自制传媒国产之光| 91一区二区三区在线观看| 色综合中文字幕国产 | 日韩欧美一区在线| 欧美精品色一区二区三区| 欧美日韩大陆一区二区| 在线播放亚洲一区| 日韩视频一区在线观看| 日韩精品一区二区三区视频| 欧美tk丨vk视频| 国产亚洲精品精华液| 日本一区二区免费在线| 国产精品国产三级国产有无不卡 | 欧美在线免费观看亚洲| 欧美日韩成人在线| 欧美tickling网站挠脚心| 欧美精品一区二区三区很污很色的| 精品国产乱码久久久久久久| 国产亚洲精品免费| 亚洲免费观看在线视频| 亚洲成人激情av| 久久狠狠亚洲综合| 国产成人精品免费网站| 99久久精品免费看| 欧美唯美清纯偷拍| 日韩精品一区国产麻豆| 久久精品一区四区| 亚洲精品欧美在线| 奇米影视一区二区三区小说| 狠狠网亚洲精品| 色美美综合视频| www国产成人免费观看视频 深夜成人网| 国产精品午夜免费| 图片区日韩欧美亚洲| 国产成人精品影视| 欧美日韩免费在线视频| 久久先锋影音av鲁色资源网| 亚洲视频中文字幕| 麻豆视频观看网址久久| www.日本不卡| 日韩欧美一级二级| 亚洲欧美色图小说| 国产一区二区三区观看| 91久久精品一区二区三| 久久久美女毛片| 性感美女久久精品| 高清在线观看日韩| 欧美美女一区二区| 日韩一区在线免费观看| 免费国产亚洲视频| 在线亚洲一区二区| 国产视频视频一区| 琪琪久久久久日韩精品| 日本高清视频一区二区| 国产午夜精品一区二区 | 欧美大黄免费观看| 亚洲精品成人天堂一二三| 国产麻豆午夜三级精品| 欧美吞精做爰啪啪高潮| 国产精品天干天干在观线| 蜜桃一区二区三区在线观看| 欧洲一区在线电影| 亚洲四区在线观看| 丁香另类激情小说| 精品入口麻豆88视频| 午夜视黄欧洲亚洲| 色综合天天视频在线观看| 国产偷v国产偷v亚洲高清| 青娱乐精品在线视频| 欧美在线视频不卡| 亚洲欧美一区二区久久| 北条麻妃一区二区三区| 欧美精品一区二区精品网| 日韩精品久久久久久| 欧美羞羞免费网站| 一区二区在线电影| 91在线国内视频| 国产欧美日韩亚州综合| 国产综合色精品一区二区三区| 欧美麻豆精品久久久久久| 亚洲福利一区二区| 欧美性大战xxxxx久久久| 日韩理论片中文av| 国产不卡免费视频| 国产目拍亚洲精品99久久精品| 国产乱人伦偷精品视频免下载| 日韩免费视频一区| 免费成人在线观看视频| 91精品国产一区二区| 日本人妖一区二区| 日韩欧美一级二级三级久久久| 美国精品在线观看| 精品国产成人系列| 国产乱码精品1区2区3区| 久久久99精品免费观看不卡| 国产剧情一区二区| 国产免费成人在线视频| 成人激情小说乱人伦| 亚洲欧美中日韩| 色婷婷综合久久久久中文一区二区| 亚洲丝袜精品丝袜在线| 色噜噜狠狠成人网p站| 亚洲动漫第一页| 欧美疯狂做受xxxx富婆| 蜜桃视频在线观看一区| 久久亚洲二区三区| av午夜一区麻豆| 一区二区高清免费观看影视大全 | 中文字幕一区二区三区色视频| 99久久综合国产精品| 一区二区三区在线观看网站| 欧美另类z0zxhd电影| 久久国产剧场电影| 国产精品久99| 欧美人牲a欧美精品| 国产一区二区三区在线观看免费| 国产日韩欧美一区二区三区乱码| av在线播放不卡| 婷婷成人综合网| 久久亚洲影视婷婷| 色美美综合视频| 久久激五月天综合精品| 综合久久一区二区三区| 欧美日韩二区三区|