⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sendmail.cpp

📁 网页上mail组件
💻 CPP
字号:
#include "stdafx.h"
#include <winsock.h>
#include <string.h>
#include <stdio.h>


BOOL SendMail();

BOOL SendMail()
{
	char queque[256];
	WORD ver=MAKEWORD(2,0);
	WSADATA wsaData;
	int ERet;

	ERet=::WSAStartup(ver,&wsaData);
	if(ERet!=0)
	{
		::MessageBox(NULL,"WSAStartup Error","WARING",MB_OK);
		return TRUE;
	}

	//get host infomation.
	struct hostent *host;
	host=gethostbyname("smtp.163.net");

/*
	struct in_addr sa;
	sa.S_un.S_addr=*(long*)host->h_addr_list[0];

	char *m=inet_ntoa(sa);
*/

	//create a socket.
	SOCKET s;
	s=::socket(AF_INET,SOCK_STREAM,0);
	if(s==INVALID_SOCKET)
	{
		ERet=::WSACleanup();
		::MessageBox(NULL,"socket Error","WARING",MB_OK);
		return FALSE;
	}


	//connect the smtp server.
	struct sockaddr_in sock;
	memset(&sock,0,sizeof(sock));

	sock.sin_family=AF_INET;
	sock.sin_addr.S_un.S_addr=*(long*)host->h_addr_list[0];
	sock.sin_port=htons(25);

	ERet=connect(s,(struct sockaddr *)&sock,sizeof(sock));
	if(ERet==SOCKET_ERROR)
	{
		ERet=::closesocket(s);
		ERet=::WSACleanup();
		::MessageBox(NULL,"connect Error","WARING",MB_OK);
		return FALSE;
	}

	//get the server 220
	ERet=recv(s,queque,256,0);
	if(ERet==SOCKET_ERROR)
	{
		ERet=::closesocket(s);
		ERet=::WSACleanup();
		::MessageBox(NULL,"recv Error","WARING",MB_OK);
		return FALSE;
	}

	queque[3]='\0';
	if(strcmp(queque,"220"))
	{
		ERet=::closesocket(s);
		ERet=::WSACleanup();
		::MessageBox(NULL,"220 Error","WARING",MB_OK);
		return FALSE;
	}

	//send HELO to the server.
	sprintf(queque,"EHLO fangguicheng\r\n");
	ERet=::send(s,queque,strlen(queque),0);

	//get 250
	ERet=recv(s,queque,256,0);
/*
	//send MAIL
	sprintf(queque,"MAIL \r\n");
	ERet=::send(s,queque,strlen(queque),0);

	//get 250
	ERet=recv(s,queque,256,0);
*/	
	//send MAIL FROM:<>
	sprintf(queque,"MAIL FROM: <fangguicheng@163.net>\r\n");
	ERet=::send(s,queque,strlen(queque),0);

	//get 250
	ERet=recv(s,queque,256,0);

/*	//send RCPT TO:<>
	sprintf(queque,"RCPT TO: <fangguicheng@163.net>\r\n");
	ERet=::send(s,queque,strlen(queque),0);

	//get 250
	ERet=recv(s,queque,256,0);

	//send RCPT TO:<>
	sprintf(queque,"RCPT TO: <fangguicheng@21cn.com>\r\n");
	ERet=::send(s,queque,strlen(queque),0);

	//get 250
	ERet=recv(s,queque,256,0);
*/

	//send RCPT TO:<>
	sprintf(queque,"RCPT TO:<fangguicheng@163.net>\r\n");
	ERet=::send(s,queque,strlen(queque),0);

	//get 250
	ERet=recv(s,queque,256,0);

	//send DATA
	sprintf(queque,"DATA \r\n");
	ERet=::send(s,queque,strlen(queque),0);

	//get 354
	ERet=recv(s,queque,256,0);

	//send the mail body.
	char temp[80];
	sprintf(temp,"Subject: Test\r\n");
	strcpy(queque,temp);
	sprintf(temp,"\r\n");
	strcat(queque,temp);
	sprintf(temp,"fjas方桂成发的信件kfllThis is the text.");
	strcat(queque,temp);
	sprintf(temp,"\r\n.\r\n");
	strcat(queque,temp);

	ERet=::send(s,queque,strlen(queque),0);

	//get 250
	ERet=recv(s,queque,256,0);

	//send QUIT
	strcpy(queque,"QUIT \r\n");
	ERet=::send(s,queque,strlen(queque),0);

	//get 221
	ERet=recv(s,queque,256,0);







	ERet=::closesocket(s);
	ERet=::WSACleanup();
	return ERet;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -