smtp演示

http://www.faqs.org/rfcs/rfc821.html

	WSADATA wsa;
	WSAStartup(MAKEWORD(2,2), &wsa);

        SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);
	if (sock == INVALID_SOCKET)
	{
		return -1;
	}

	struct sockaddr_in addr;
	addr.sin_addr.s_addr = inet_addr(server);
	addr.sin_family = AF_INET;
	addr.sin_port = htons(port);
	
	if (connect(sock, (struct sockaddr *)&addr, sizeof(addr)))
	{
		closesocket(sock);
		return -2;
	}

	// ehlo
	char szBuf [SIZE_4K] = {0};
	std::string request = "EHLO ";
	request += server;
	request += HTTP_CRLF;
	send(sock, request.c_str(), request.length(), 0);
	memset(szBuf, 0, SIZE_4K);
	recv(sock, szBuf, SIZE_4K, 0);

	// auth login
	request = "AUTH LOGIN";
	request += HTTP_CRLF;
	send(sock, request.c_str(), request.length(), 0);
	memset(szBuf, 0, SIZE_4K);
	recv(sock, szBuf, SIZE_4K, 0);

	// =------
	request = user;
	request += HTTP_CRLF;
	send(sock, request.c_str(), request.length(), 0);
	recv(sock, szBuf, SIZE_4K, 0);

	request = pass;
	request += HTTP_CRLF;
	send(sock, request.c_str(), request.length(), 0);
	memset(szBuf, 0, SIZE_4K);
	recv(sock, szBuf, SIZE_4K, 0);

	// mail from
	request = "MAIL FROM ";
	request += mailfrom;
	request += HTTP_CRLF;
	send(sock, request.c_str(), request.length(), 0);
	memset(szBuf, 0, SIZE_4K);
	recv(sock, szBuf, SIZE_4K, 0);	

	// rcpt to
	request = "RCPT TO ";
	request += rcptto;
	request += HTTP_CRLF;
	send(sock, request.c_str(), request.length(), 0);
	memset(szBuf, 0, SIZE_4K);
	recv(sock, szBuf, SIZE_4K, 0);	

	// data
	request = "DATA";
	request += HTTP_CRLF;
	send(sock, request.c_str(), request.length(), 0);
	memset(szBuf, 0, SIZE_4K);
	recv(sock, szBuf, SIZE_4K, 0);
	// =-----------
	request = "From:";
	request += mailfrom;
	request += HTTP_CRLF;
	request += "To:";
	request += rcptto;
	request += HTTP_CRLF;
	request += "Subject:";
	request += subject;
	request += HTTP_CRLF;
	request += "Cc:";
	request += cc;
	request += HTTP_CRLF;
	request += HTTP_CRLF;
	request += body;
	request += HTTP_CRLF;
	request += ".";
	request += HTTP_CRLF;
	send(sock, request.c_str(), request.length(), 0);
	memset(szBuf, 0, SIZE_4K);
	recv(sock, szBuf, SIZE_4K, 0);

	// noop
	request = "NOOP";
	request += HTTP_CRLF;
	send(sock, request.c_str(), request.length(), 0);
	memset(szBuf, 0, SIZE_4K);
	recv(sock, szBuf, SIZE_4K, 0);

	// quit
	request = "QUIT";
	request += HTTP_CRLF;
	send(sock, request.c_str(), request.length(), 0);
	memset(szBuf, 0, SIZE_4K);
	recv(sock, szBuf, SIZE_4K, 0);

	closesocket(sock);


pop3演示

http://www.rfc-editor.org/rfc/rfc1939.txt

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐