smtp&pop3认证邮件发送接收

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值