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

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

?? smtp.cpp

?? vc++網絡編程教程的源碼。可能對使用vc網絡編程的有用。
?? 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一区二区三区免费野_久草精品视频
亚洲欧美综合另类在线卡通| 色八戒一区二区三区| 久久精品视频一区| 99国产一区二区三精品乱码| 中文一区一区三区高中清不卡| 国产成人av在线影院| 亚洲激情成人在线| www欧美成人18+| 欧美日韩亚洲国产综合| 成人18视频日本| 亚洲.国产.中文慕字在线| 日本一区二区视频在线| 777欧美精品| 一本高清dvd不卡在线观看| 美女在线视频一区| 亚洲国产一区二区在线播放| 国产日韩成人精品| 日韩欧美一区二区免费| 欧美男人的天堂一二区| 色综合天天做天天爱| 成人va在线观看| 国产一区二区在线视频| 午夜精品久久久久久久久久久 | 欧美揉bbbbb揉bbbbb| 菠萝蜜视频在线观看一区| 国产乱理伦片在线观看夜一区| 天堂精品中文字幕在线| 亚洲综合久久av| 有码一区二区三区| 久久精品亚洲精品国产欧美| 2021中文字幕一区亚洲| 欧美午夜精品久久久久久孕妇| 国产精品白丝av| av不卡一区二区三区| 成人h版在线观看| 日韩高清不卡一区二区| 久久久久久久久久久黄色| 久久一夜天堂av一区二区三区| 在线精品视频免费播放| 欧美蜜桃一区二区三区| 日韩一区二区三区四区五区六区| 9191精品国产综合久久久久久 | 91丨porny丨户外露出| www.久久久久久久久| 欧美卡1卡2卡| 国产精品久久久一本精品| 日韩精品亚洲一区| 99久久99久久精品国产片果冻| 欧美一区二区三区在线看| 中文字幕一区二区三| 国产一区在线观看视频| 欧美日韩在线观看一区二区| 国产精品福利影院| 国产成人在线观看| 亚洲精品在线网站| 日韩不卡在线观看日韩不卡视频| 成人av在线播放网站| 久久久精品影视| 毛片不卡一区二区| 欧美一区二区在线视频| 午夜视频在线观看一区二区 | 色噜噜夜夜夜综合网| 国产精品美女久久久久av爽李琼 | 中文字幕一区在线观看视频| 国产乱国产乱300精品| 欧美大尺度电影在线| 日韩电影在线免费看| 欧美午夜电影在线播放| 亚洲第一会所有码转帖| 欧美吞精做爰啪啪高潮| 亚洲一区二区高清| 欧美精品aⅴ在线视频| 久久精品国产色蜜蜜麻豆| 国产亚洲一区二区三区| 成人在线视频首页| 亚洲色图视频网| 欧美另类久久久品| 激情五月激情综合网| 日本一区二区三区视频视频| 色综合久久精品| 日韩精品欧美精品| 久久精品亚洲乱码伦伦中文| 91视频观看视频| 秋霞国产午夜精品免费视频| www激情久久| 欧日韩精品视频| 伦理电影国产精品| 18欧美亚洲精品| 日韩欧美你懂的| 91亚洲精品久久久蜜桃网站| 天堂一区二区在线| 国产精品免费看片| 精品三级av在线| 色噜噜偷拍精品综合在线| 国产精品一级二级三级| 午夜精品久久久久久不卡8050| 国产午夜精品一区二区三区嫩草| 一本色道久久综合亚洲精品按摩| 久久99精品久久只有精品| 亚洲激情图片一区| 中文字幕欧美区| 精品国产精品一区二区夜夜嗨| 色综合久久久久网| 99久久久国产精品免费蜜臀| 久久国产视频网| 亚洲综合免费观看高清完整版 | 久久久久久久久99精品| 欧美精品自拍偷拍| 91在线视频播放| 成人久久18免费网站麻豆| 日韩影院精彩在线| 丝袜a∨在线一区二区三区不卡| 《视频一区视频二区| 国产精品久久网站| 中文字幕在线一区二区三区| 久久精品亚洲麻豆av一区二区 | 国产精品久久午夜| 精品国产乱码久久久久久1区2区 | 中文字幕一区二区三区不卡 | 正在播放亚洲一区| 7777精品久久久大香线蕉| 欧美日韩中文一区| 欧美日韩高清影院| 91精品在线一区二区| 欧美一区二区三区在线电影| 91麻豆精品久久久久蜜臀| 91丨九色丨蝌蚪丨老版| 一区二区三区四区亚洲| 一级做a爱片久久| 三级精品在线观看| 国产资源精品在线观看| 成人av在线资源网站| 欧美熟乱第一页| 欧美刺激脚交jootjob| 久久久久久99久久久精品网站| 久久久www成人免费毛片麻豆| 亚洲视频在线一区| 青青草视频一区| 91麻豆国产福利在线观看| 欧美性色黄大片| 国产日韩影视精品| 亚洲福利视频一区| 国产精品1区2区3区在线观看| 91网站最新地址| 日韩亚洲欧美一区| 一区二区三区波多野结衣在线观看| 首页综合国产亚洲丝袜| 国产999精品久久久久久| 色屁屁一区二区| 欧美精品一区二区三区高清aⅴ| 久久精品人人爽人人爽| 国产日韩欧美精品一区| 一区二区三区在线视频播放| 国产在线国偷精品免费看| 色吧成人激情小说| 久久精品一区四区| 亚洲夂夂婷婷色拍ww47| 亚洲男人的天堂av| 一区二区三区四区亚洲| 久久丁香综合五月国产三级网站| av男人天堂一区| 日韩精品一区二区三区中文精品| 国产精品美女久久久久久久| 日韩精品一级二级| 69久久夜色精品国产69蝌蚪网| 中文一区在线播放| 国产一区二三区好的| 欧美精品一区二区三区久久久| 午夜欧美电影在线观看| 在线视频你懂得一区| 亚洲综合免费观看高清完整版| 岛国精品一区二区| 欧美精品一区二区在线播放| 久国产精品韩国三级视频| 91麻豆精品国产91久久久更新时间| 亚洲色图视频网| 在线观看区一区二| 亚洲午夜一区二区| 欧美日韩三级在线| 激情五月婷婷综合| 久久伊99综合婷婷久久伊| 国产做a爰片久久毛片| 精品成a人在线观看| 久草精品在线观看| 国产欧美综合在线| 国产成人av网站| 国产欧美1区2区3区| 97成人超碰视| 日韩va欧美va亚洲va久久| 日韩一卡二卡三卡国产欧美| 久久9热精品视频| 亚洲精品日日夜夜| 制服丝袜亚洲色图| 久88久久88久久久| 亚洲免费在线观看| 制服丝袜亚洲精品中文字幕| 首页欧美精品中文字幕| 欧美国产日本视频| 欧美精品1区2区| 成人一区二区三区中文字幕|