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

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

?? send.cpp

?? 一個國外學生做的基于Web瀏覽器的email程序
?? CPP
字號:
#include "webemail.h"#include "fullpipe.h"#include <time.h>//not used, I don't thinkvoid sendmulti(){	//sendmulti();}//not used, I don't thinkvoid sendtext(){	char data[500];	cout << "Content-type: plain/text" << endl;	cout << "Pragma: no-cache" << endl << endl;	while (fgets(data, 499, stdin)!=NULL)	{		cout << data;	}	return;}void send() //spawns sendmail to send mail{	passwd *info;	char boundary[300];	char newboundary[302];	char *lengths; 	int length = 0;	char *data;	char *env;	int stage = 0;	char *to = NULL;	char *cc = NULL;	char *subject = NULL;	char *message = NULL;	char *file = NULL;   //file data to send	char *filename = NULL;	char *receipt = NULL;	char *replied = NULL;	char *attachtype = NULL;	int filesize = 0;	char mimeboundary[37];  //36 chars plus null	for (int l = 0; l < 37; l++)		mimeboundary[l] = '-';	mimeboundary[36] = '\0';	info=getpwnam(globaluser);	if (info == NULL)	{		error("send(): Can't get user data");		return;	}	env = getenv("CONTENT_TYPE");	if (env == NULL)	{		error("send(): boundary data not found");		return;	}	if(finddata(env, "boundary=", boundary)==NULL)	{		error("Send(): Can't find boundary");		return;	}	snprintf(newboundary, 302, "--%s", boundary);	lengths = getenv("CONTENT_LENGTH");	if (lengths == NULL)	{		error("send(): Length data not found");		return;	}	length = atoi(lengths);			data = new char[length+10];	fread(data, 1, length, stdin);	int offset = 0;	while (offset < length)	{		if (strncmp("name=\"to\"", data+offset, 9) == 0)		{			while (data[offset] != '\n' && offset < strlen(data))			{				offset++;			}			offset+=3;  //takes care of the header separator			to = data+offset;			while (offset < (length-strlen(newboundary)))			{				if (strncmp(data+offset, newboundary, strlen(newboundary)) == 0)				{					data[offset-2] = '\0';					break;				}				offset++;			}		}		if (strncmp("name=\"cc\"", data+offset, 9) == 0)		{			while (data[offset] != '\n' && offset < length)			{				offset++;			}			offset+=3;  //takes care of the header separator			cc = data+offset;			while (offset < (length-strlen(newboundary)))			{				if (strncmp(data+offset, newboundary, strlen(newboundary)) == 0)				{					data[offset-2] = '\0';					break;				}				offset++;			}		}		if (strncmp("name=\"subject\"", data+offset, 14) == 0)		{			while (data[offset] != '\n' && offset < length)			{				offset++;			}			offset+=3;  //takes care of the header separator			subject = data+offset;			while (offset < (length-strlen(newboundary)))			{				if (strncmp(data+offset, newboundary, strlen(newboundary)) == 0)				{					data[offset-2] = '\0';					break;				}				offset++;			}		}		if (strncmp("name=\"message\"", data+offset, 14) == 0)		{			while (data[offset] != '\n' && offset < length)			{				offset++;			}			offset+=3;  //takes care of the header separator			message = data+offset;			while (offset < (length-strlen(newboundary)))			{				if (strncmp(data+offset, newboundary, strlen(newboundary)) == 0)				{					data[offset-2] = '\0';					break;				}				offset++;			}		}		if (strncmp("filename=\"", data+offset, 10)==0)		{			filename=data+offset+10;			offset+=10;			while (data[offset] != '"' && offset < length)			{				offset++;			}			data[offset] = '\0';			while (!(data[offset] == 10 && data[offset-1] == 13 &&			data[offset-2] == 10 && data[offset-3] == 13) &&			offset < length)			{				offset++;			}			offset++;			file = data+offset;			while (offset < (length-strlen(newboundary)))			{				if (strncmp(data+offset, newboundary, strlen(newboundary)) == 0)				{					data[offset-2] = '\0';					filesize = (data+offset-2)-file;					break;				}				offset++;			}		}		if (strncmp("name=\"receipt\"", data+offset, 14) == 0)		{			while (data[offset] != '\n' && offset < length)			{				offset++;			}			offset+=3;  //takes care of the header separator			receipt = data+offset;			while (offset < (length-strlen(newboundary)))			{				if (strncmp(data+offset, newboundary, strlen(newboundary)) == 0)				{					data[offset-2] = '\0';  //sets null					break;				}				offset++;			}		}		if (strncmp("name=\"attachtype\"", data+offset, 17) == 0)		{			while (data[offset] != '\n' && offset < length)			{				offset++;			}			offset+=3;  //takes care of the header separator			attachtype = data+offset;			while (offset < (length-strlen(newboundary)))			{				if (strncmp(data+offset, newboundary, strlen(newboundary)) == 0)				{					data[offset-2] = '\0';  //sets null					break;				}				offset++;			}		}		if (strncmp("name=\"replied\"", data+offset, 14) == 0)		{			while (data[offset] != '\n' && offset < length)			{				offset++;			}			offset+=3;  //takes care of the header separator			replied = data+offset;			while (offset < (length-strlen(newboundary)))			{				if (strncmp(data+offset, newboundary, strlen(newboundary)) == 0)				{					data[offset-2] = '\0';  //sets null					break;				}				offset++;			}		}		offset++;	}	//write data to sendmail	FILE * out;	out = popen(SENDMAIL, "w");	if (out == NULL)	{		error("Send(): Error opening or piping to sendmail");		return;	}	FILE * sentfile;	char sentpath[400];	snprintf(sentpath, 400, "%s/.webmail/sent", info->pw_dir);	sentfile = fopen(sentpath, "a");	if (sentfile == NULL)	{		pclose(out);		error("Send(): Error opening sent file");		return;	}	if (bothlock(sentfile, 'w')!=0)	{		pclose(out);		fclose(sentfile);		error("Send(): Error locking sentfile");	}	//Split into uuencode and mime	if (strncmp("Mime", attachtype, 4)==0)	{		time_t mytime;		mytime = time(NULL);		srand((int)mytime);		for (int l = 12; l<36; l++)			mimeboundary[l] = ((int) (10.0*rand()/(RAND_MAX+1.0)))+'0';	}	fprintf(sentfile, "\nFrom \n");	//sending to	if (to[0] == '\0')	{		error("Send(): \"To\" field is not filled in.");		return;	}	removereturn(to);	fprintf(out, "To: %s\n", to);	fprintf(sentfile, "To: %s\n", to);	//sending Return-Path	FILE *returnfile;	char returnpath[400];	char returnaddr[400];	snprintf(returnpath, 400, "%s/.webmail/return",info->pw_dir);	returnfile = fopen(returnpath, "r");	if (returnfile != NULL && USERRETURN)	{		for (int i = 0; i < 399; i++)		{			returnaddr[i] = fgetc(returnfile);			if (returnaddr[i] == EOF)			{				returnaddr[i] = '\0';				break;			}		}		fclose(returnfile);		fprintf(out, "Reply-to: <%s>\n", returnaddr);		fprintf(sentfile, "Reply-to: <%s>\n", returnaddr);		fprintf(out, "From: %s\n", returnaddr);		fprintf(sentfile, "From: %s\n", returnaddr);		if (receipt && strncmp(receipt, "on", 2)==0)			fprintf(out, "Return-Receipt-To: %s\n", returnaddr);	}	else	{		if (HOSTMODE == 2) //defined		{			fprintf(out, "Reply-to: <%s@%s>\n", info->pw_name, HOSTNAME);			fprintf(sentfile, "Reply-to: <%s@%s>\n", info->pw_name, HOSTNAME);			fprintf(out, "From: %s@%s\n", info->pw_name, HOSTNAME);			fprintf(sentfile, "From: %s@%s\n", info->pw_name, HOSTNAME);			if (receipt && strncmp(receipt, "on", 2)==0)				fprintf(out, "Return-Receipt-To: %s@%s\n", info->pw_name, HOSTNAME); 		}		else if (HOSTMODE == 1)		{			char *host;			if ((host = getenv("SERVER_NAME")) != NULL) //Get return path from server			{ 				fprintf(out, "Reply-to: <%s@%s>\n", info->pw_name, host); 				fprintf(sentfile, "Reply-to: <%s@%s>\n", info->pw_name, host);				fprintf(out, "From: %s@%s\n", info->pw_name, host);				fprintf(sentfile, "From: %s@%s\n", info->pw_name, host);				if (receipt && strncmp(receipt, "on", 2)==0)					fprintf(out, "Return-Receipt-To: %s@%s\n", info->pw_name, host); 			}			else //use sendmail if httpd fails			{				fprintf(out, "From: %s\n", info->pw_name);				fprintf(sentfile, "From: %s\n", info->pw_name);				if (receipt && strncmp(receipt, "on", 2)==0)			 		fprintf(out, "Return-Receipt-To: %s\n", info->pw_name); 		 	}		}		else //Let sendmail fill in return path		{			fprintf(out, "From: %s\n", info->pw_name);			fprintf(sentfile, "From: %s\n", info->pw_name);			if (receipt && strncmp(receipt, "on", 2)==0)		 		fprintf(out, "Return-Receipt-To: %s\n", info->pw_name); 		}	}	//sending X-Mailer	fprintf(out, "X-Mailer: WEBEMAIL %s\n", VER);	fprintf(sentfile, "X-Mailer: WEBEMAIL %s\n", VER);	//sending cc	if (cc[0] != '\0')	{		removereturn(cc);		fprintf(out, "Cc: %s\n", cc);		fprintf(sentfile, "Cc: %s\n", cc);	}	//sending subject	removereturn(subject);	fprintf(out, "Subject: %s\n", subject);	fprintf(sentfile, "Subject: %s\n", subject);	if (strncmp("Mime", attachtype, 4)==0)	{		fprintf(out, "MIME-Version: 1.0\n");		fprintf(sentfile, "MIME-Version: 1.0\n");		fprintf(out, "Content-Type: multipart/mixed;\n");		fprintf(sentfile, "Content-Type: multipart/mixed;\n");		fprintf(out, " boundary=\"%s\"\n", mimeboundary);		fprintf(sentfile, " boundary=\"%s\"\n", mimeboundary);	}	//sending header break	fprintf(out, "\n");  //header break	fprintf(sentfile, "\n");  //header break	if (strncmp("Mime", attachtype, 4)==0)	{		fprintf(out, "This is a MIME-encapsulated message.\n\n");		fprintf(sentfile, "This is a MIME-encapsulated message.\n\n");	}	//sending message	if (strncmp("Mime", attachtype, 4)==0)	{		//start mime section		fprintf(out, "--%s\n", mimeboundary);		fprintf(sentfile, "--%s\n", mimeboundary);		fprintf(out, "Content-Type: text/plain; charset=us-ascii\n");		fprintf(sentfile, "Content-Type: text/plain; charset=us-ascii\n");		fprintf(out, "Content-Transfer-Encoding: 7bit\n");		fprintf(sentfile, "Content-Transfer-Encoding: 7bit\n");		fprintf(out, "\n");		fprintf(sentfile, "\n");		fprintf(out, "%s", message); 		fprintf(sentfile, "%s", message); 		fprintf(out, "\n\n");		fprintf(sentfile, "\n\n");	}	else	{		fprintf(out, "%s", message); 		fprintf(sentfile, "%s", message); 	}	if (filesize > 0)	{		int usebase64 = 0;		if (strncmp("Mime", attachtype, 4)==0)		{			fprintf(out, "--%s\n", mimeboundary);			fprintf(sentfile, "--%s\n", mimeboundary);			fprintf(out, "Content-Type: ");			fprintf(sentfile, "Content-Type: ");			fprintf(out, "%s\n", guessmime(filename));			fprintf(sentfile, "%s\n", guessmime(filename));			//decide on how to encode data			if (strcmp(guessmime(filename), "text/html") == 0 ||			strcmp(guessmime(filename), "text/plain") == 0)			{				fprintf(out, "Content-Transfer-Encoding: 7bit\n");				fprintf(sentfile, "Content-Transfer-Encoding: 7bit\n");				usebase64 = 0;			}			else			{				fprintf(out, "Content-Transfer-Encoding: base64\n");				fprintf(sentfile, "Content-Transfer-Encoding: base64\n");				usebase64 = 1;			}			fprintf(out, "Content-Disposition: inline,\n");			fprintf(sentfile, "Content-Disposition: inline,\n");			fprintf(out, " filename=\"%s\"\n", filename);			fprintf(sentfile, " filename=\"%s\"\n", filename);			fprintf(out, "\n");			fprintf(sentfile, "\n");		}		char encodepath[500];		char buf;		int pipe[2];		char *arg[3];		if (strncmp("Mime", attachtype, 4)==0 && usebase64)		{			snprintf(encodepath, 500, "/usr/bin/mimencode");			arg[0] = "mimencode";			arg[1] = '\0';		}		else if (strncmp("Mime", attachtype, 4)==0 && usebase64 == 0)		{			snprintf(encodepath, 500, "/bin/cat");			arg[0] = "cat";			arg[1] = '\0';		}		else		{					snprintf(encodepath, 500, "/usr/bin/uuencode");			arg[0] = "uuencode";			arg[1] = filename;			arg[2] = '\0';		}		//make sure any child process don't have data in the buffer		//that might be writen on their termination.		fflush(out);		fflush(sentfile);		fflush(stdout);		fflush(stdin);		if (fullpipe_arg(encodepath, arg, pipe))		{			error("send(): Problem with pipe");			return;		}		//fork to prevent blocking		int forkresult;		forkresult = fork();		if (forkresult == (pid_t)-1)		{			error("send(): Problem forking");			return;		}		if (forkresult == (pid_t)0) //child		{			write(pipe[1], file, filesize);			close(pipe[1]);			exit(0);		}		else //parent		{			close(pipe[1]); //prevents block on open write			if (strncmp("Mime", attachtype, 4)==0)			{}			else			{				fputs("\n\n", out);				fputs("\n\n", sentfile);			}			while (read(pipe[0], &buf, 1))			{				fputc(buf, out);				fputc(buf, sentfile);			}			close(pipe[0]);						if (strncmp("Mime", attachtype, 4)==0)			{				fprintf(out, "\n");				fprintf(sentfile, "\n");			}		}	}	if (strncmp("Mime", attachtype, 4)==0)	{		fprintf(out, "--%s--\n", mimeboundary);		fprintf(sentfile, "--%s--\n", mimeboundary);		}	//MARK REPLIED BEFORE LETTING SENDMAIL SEND	//OR SENDMAILS MESSAGE MAY BE OVER WRITTEN	int repliednum = atoi(replied);	if (repliednum > 0)	{		markreplied(repliednum);	}	//displays sendmail return errors 	if (pclose(out) != 0)	{		error("sendmail: bad local \"to\"/\"cc\" address or internal sendmail problem.");		return;	}	fclose(sentfile);	disjavascript("", "Mail sent", "menu");	delete(data);}void sendto() //sets up write to send mail{	char *env;	int number = 0;	FILE *data;	char dataname[400];	passwd *info;	char buf[500];	if ((env = getenv("QUERY_STRING")) == NULL)	{		error("sendto():environment error");		return;	}	number = atoi(env+9);	info = getpwnam(globaluser);	snprintf(dataname, 400, "%s/.webmail/book", info->pw_dir);	data = fopen(dataname, "r");	if (data == NULL)	{		error("sendto():can't open book for read");		return;	}	if (bothlock(data, 'r')!=0)	{		fclose(data);		error("sendto():Can't lock book for read");		return;	}	for (int i = 0; i < (number-1)*7+2; i++)	{		if (fgets(buf, 499, data) == NULL)		{			error("sendto():bad input");			return;		}	}	bothunlock(data);	fclose(data);	wewrite(2, buf, 0);	return;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区中文字幕| 亚洲va欧美va人人爽午夜| 极品少妇一区二区三区精品视频| 欧美色涩在线第一页| 一区二区三区高清不卡| 色呦呦日韩精品| 亚洲日本一区二区| 91麻豆高清视频| 亚洲精品一二三区| 欧美在线视频日韩| 亚洲图片欧美视频| 欧美日韩国产美| 日本大胆欧美人术艺术动态| 欧美日韩国产大片| 日本亚洲欧美天堂免费| 欧美一级精品大片| 久久国产日韩欧美精品| 久久综合久久综合久久综合| 激情综合网天天干| 国产亚洲欧美色| 成人精品国产免费网站| 中文字幕一区二区三| 91日韩一区二区三区| 亚洲一区电影777| 在线播放亚洲一区| 免费xxxx性欧美18vr| 久久综合九色综合久久久精品综合| 韩国一区二区三区| 国产精品三级在线观看| 一本久久a久久精品亚洲| 亚洲综合激情小说| 91精品国产综合久久香蕉的特点| 麻豆一区二区99久久久久| 久久久久久9999| 99精品视频在线观看免费| 亚洲一二三四在线| 在线观看91av| 国产在线精品免费av| 国产精品少妇自拍| 欧美性做爰猛烈叫床潮| 免费观看一级特黄欧美大片| 久久久久97国产精华液好用吗| aaa欧美日韩| 午夜视频在线观看一区二区| 日韩美女主播在线视频一区二区三区| 国产乱码精品一品二品| 亚洲精品乱码久久久久久黑人| 欧美天堂亚洲电影院在线播放| 另类小说一区二区三区| 国产女主播视频一区二区| 99久久久久久99| 日韩电影在线看| 国产清纯美女被跳蛋高潮一区二区久久w| av男人天堂一区| 日韩福利视频网| 中文字幕欧美激情| 欧美区一区二区三区| 国产精品123区| 亚洲与欧洲av电影| 精品国产一区二区三区不卡| www.欧美亚洲| 秋霞午夜鲁丝一区二区老狼| 国产欧美日本一区视频| 欧洲一区在线观看| 国产精品亚洲一区二区三区妖精 | 欧美精品一区二区三区久久久| jizz一区二区| 免费成人美女在线观看| 亚洲欧美综合另类在线卡通| 在线成人av网站| av成人免费在线观看| 麻豆精品新av中文字幕| 亚洲精品一二三| 久久久精品国产免大香伊| 欧美三级资源在线| 国产91丝袜在线18| 日本va欧美va精品发布| 亚洲欧洲日韩av| 精品入口麻豆88视频| 欧美亚洲综合网| 高清国产一区二区| 老司机精品视频在线| 亚洲制服欧美中文字幕中文字幕| 国产欧美va欧美不卡在线| 91精品国产入口在线| 91免费版在线| 国产九色精品成人porny| 图片区日韩欧美亚洲| 日韩理论片在线| 久久久天堂av| 日韩欧美中文字幕精品| 欧美优质美女网站| 成av人片一区二区| 国产一区二区三区免费播放| 日韩国产精品久久| 一区二区三区四区蜜桃| 国产精品素人一区二区| 精品国产一区二区三区久久久蜜月| 精品污污网站免费看| 91啦中文在线观看| 成人免费视频caoporn| 国产综合成人久久大片91| 日本伊人精品一区二区三区观看方式| 亚洲色图19p| 国产精品初高中害羞小美女文| 欧美精品一区二区精品网| 这里只有精品电影| 欧美三日本三级三级在线播放| 99热精品国产| 成人一区在线看| 国产精品一区在线| 韩国成人福利片在线播放| 奇米影视7777精品一区二区| 亚洲精品国产品国语在线app| 国产精品久久久久久久岛一牛影视| 2023国产精品视频| 精品国产人成亚洲区| 欧美一区二区精品久久911| 欧美美女一区二区| 欧美日韩国产在线播放网站| 欧美性猛片aaaaaaa做受| 色婷婷久久99综合精品jk白丝 | 免费亚洲电影在线| 日韩精品欧美成人高清一区二区| 亚洲福利电影网| 亚洲第一在线综合网站| 亚洲图片欧美色图| 亚洲a一区二区| 婷婷国产在线综合| 视频在线观看一区二区三区| 亚洲成a人v欧美综合天堂下载 | 成人动漫精品一区二区| 丰满亚洲少妇av| 成人精品国产免费网站| 成人av先锋影音| 99久久免费视频.com| 91蜜桃在线免费视频| 色婷婷一区二区| 欧美私人免费视频| 7878成人国产在线观看| 日韩一区二区免费电影| 欧美大片顶级少妇| 久久嫩草精品久久久精品一| 国产日韩欧美激情| 国产精品久久网站| 亚洲欧美另类在线| 亚洲超碰精品一区二区| 日韩国产在线一| 久久精品国产第一区二区三区| 精品一区二区免费看| 国产不卡免费视频| 99re在线视频这里只有精品| 在线看一区二区| 91精品国产丝袜白色高跟鞋| 精品国产在天天线2019| 国产欧美视频一区二区| 亚洲天堂福利av| 视频一区视频二区在线观看| 麻豆成人91精品二区三区| 国产精品99久久久久久久vr| 99久久精品久久久久久清纯| 欧美在线小视频| 欧美成人在线直播| 国产精品免费看片| 亚洲午夜av在线| 国产一区二区在线影院| www.亚洲色图.com| 欧美日韩电影一区| 精品粉嫩aⅴ一区二区三区四区| 欧美国产视频在线| 亚洲高清在线精品| 国产综合色在线视频区| 99精品视频在线免费观看| 在线播放一区二区三区| 国产偷国产偷精品高清尤物| 亚洲精品福利视频网站| 美女mm1313爽爽久久久蜜臀| 成人黄色网址在线观看| 欧美日韩精品是欧美日韩精品| 精品999在线播放| 亚洲黄色片在线观看| 麻豆精品国产传媒mv男同| 波多野结衣视频一区| 欧美电影在线免费观看| 国产精品美女久久久久久久久| 亚洲成人av免费| 国产99一区视频免费| 欧美日韩一区二区三区视频| 国产日韩欧美一区二区三区乱码| 一级特黄大欧美久久久| 国产毛片精品视频| 欧美性受xxxx黑人xyx性爽| 久久久综合视频| 亚洲福利一区二区| 成人va在线观看| 日韩一区二区电影在线| 亚洲女同一区二区| 国产精品一区在线观看你懂的| 欧美日韩高清在线| 综合分类小说区另类春色亚洲小说欧美|