Example #1
0
int do_fwd(struct fileheader *x, char *board, char *target)
{
        FILE *fp, *fp2;
        char title[512], buf[512], path[200], i;
        sprintf(path, "boards/%s/%s", board, x->filename);
        if(!file_exist(path))
                http_fatal("文件内容已丢失, 无法转寄");
        sprintf(title, "[转寄] %s", x->title);
        title[60]=0;
        post_mail(target, title, path, currentuser.userid, currentuser.username, fromhost, -1,1);
        printf("文章已转寄给'%s'<br>\n", nohtml(target));
        printf("[<a href='javascript:history.go(-2)'>返回</a>]");
}
Example #2
0
int
bbssndmail_main()
{
	char mymaildir[80], userid[80], filename[80], filename2[80], title[80], title2[80],
	    *content;
	char *ptr;
	int i, sig, backup, allfriend, mark = 0, reply = 0, num = 0, use_ubb;
	struct userec *u;
	struct fileheader fh;
	html_header(1);
	strsncpy(userid, getparm("userid"), 40);
	if (!loginok || (isguest && strcmp(userid, "SYSOP")))
		http_fatal("匆匆过客不能写信,请先登录");
	sprintf(mymaildir, "mail/%c/%s/.DIR", mytoupper(currentuser->userid[0]),
		currentuser->userid);
	if ((ptr=check_mailperm(currentuser)))
		http_fatal(ptr);
	changemode(SMAIL);
	strsncpy(title, getparm("title"), 50);
	backup = strlen(getparm("backup"));
	allfriend = strlen(getparm("allfriend"));
	reply = atoi(getparm("reply"));
	num = atoi(getparm("num"));
	use_ubb = strlen(getparm("useubb"));
	if (!strstr(userid, "@") && !allfriend) {
		if (getuser(userid, &u) <= 0)
			http_fatal("错误的收信人帐号 %s", userid);
		strcpy(userid, u->userid);
		if (inoverride(currentuser->userid, userid, "rejects"))
			http_fatal("无法发信给这个人");
	}
	if (!USERPERM(currentuser, PERM_LOGINOK) && strcmp(userid, "SYSOP"))
		http_fatal("未通过注册用户只能给SYSOP写信!");
	for (i = 0; i < strlen(title); i++)
		if (title[i] <= 27 && title[i] >= -1)
			title[i] = ' ';
	sig = atoi(getparm("signature"));
	content = getparm("text");
	if (title[0] == 0)
		strcpy(title, "没主题");
	sprintf(filename, "bbstmpfs/tmp/%d.tmp", thispid);
	sprintf(filename2, "bbstmpfs/tmp/%d.tmp2", thispid);
	if (use_ubb)
		ubb2ansi(content, filename2);
	else
		f_write(filename2, content);
	if (insertattachments_byfile(filename, filename2, currentuser->userid) > 0)
		mark |= FH_ATTACHED;
	unlink(filename2);
	if (!allfriend) {
		snprintf(title2, sizeof (title2), "{%s} %s", userid, title);
		post_mail(userid, title, filename, currentuser->userid,
			  currentuser->username, fromhost, sig - 1, mark);
	} else {
		loadfriend(currentuser->userid);
		snprintf(title2, sizeof (title2), "[群体信件] %.60s", title);
		for (i = 0; i < friendnum; i++) {
			if (getuser(fff[i].id, &u) <= 0) {
				u = NULL;
				continue;
			}
			if (inoverride
			    (currentuser->userid, fff[i].id, "rejects"))
				    continue;
			post_mail(fff[i].id, title2, filename,
				  currentuser->userid, currentuser->username,
				  fromhost, sig - 1, mark);
		}
	}
	if (backup)
		post_mail(currentuser->userid, title2, filename,
			  currentuser->userid, currentuser->username, fromhost,
			  sig - 1, mark);
	unlink(filename);
	if (reply > 0) {
		/* churinga - add reply mark 'R' */
		if (get_record(&fh, sizeof(struct fileheader), num, mymaildir) > 0) {
			fh.accessed |= FH_REPLIED;
			put_record(&fh, sizeof (struct fileheader), num, mymaildir);
		}
	}
	if(!(u->userdefine & DEF_SEEWELC1))
		printf("发送失败,此用户已经关闭信箱。");
	else
		printf("信件已寄给%s.<br>\n", allfriend ? "所有好友" : userid);
	
	if (backup)
		printf("信件已经备份.<br>\n");
	printf("<a href='javascript:history.go(-2)'>返回</a>");
	http_quit();
	return 0;
}
Example #3
0
int main()
{
    FILE *fp;
    char userid[80], filename[80], dir[80], title[80], title2[80], buf[80], *content;
    int t, i, sig, backup, mode=0;
    struct fileheader x;
    struct userec *u;
    init_all();
    if(!loginok)
        http_fatal("匆匆过客不能写信,请先登录");
    if(!(currentuser.userlevel & PERM_POST))
        http_fatal("您尚未通过注册,暂无发送信件权限");
    modify_mode(u_info,SMAIL+20000);	//bluetent
    strsncpy(userid, getparm("userid"), 40);
    strsncpy(title, getparm("title"), 50);
    backup=strlen(getparm("backup"));
    int listmail=atoi(getparm("listmail"));
    if(!strcmp(userid,"")&&listmail>=1&&listmail<=9)
        //listmail=1
        ;
    else if(!strstr(userid, "@"))
    {
        u=getuser(userid);
        if(u==0)
        {
            http_fatal("收信人帐号不存在.");
        }
        if(strcmp(userid,"guest")==0)
        {
            http_fatal("您不能给guest帐号写信.");
        }
        strcpy(userid, u->userid);
    }
    else if(!isvalidEmail(userid))
    {
        http_fatal("收信人帐号不存在.");

    }
    for(i=0; i<strlen(title); i++)
        if(title[i]<27 && title[i]>=-1)
            title[i]=' ';
    sig=atoi(getparm("signature"));
    //mode=atoi(getparm("mode"));
    content=getparm("text");

    if(title[0]==0)
        strcpy(title, "没主题");
    if(listmail)
        //huangxu@061217:title只有50长,所以加上头也是安全长度之内的
    {
        sprintf(title2,"[群体信件]%s",title);
        strcpy(title,title2);
    }
    sprintf(filename, "tmp/%d.tmp", getpid());
    f_append(filename, content);
    sprintf(title2, "{%s} %s", userid, title);
    title2[70]=0;
    if(backup)
        post_mail(currentuser.userid, title2, filename, currentuser.userid, currentuser.username, fromhost, sig-1,1);
    if(listmail) {//群体信件
        char path[STRLEN];
        if(listmail>1)//huangxu@070425:群信名单
        {
            sprintf(buf, "maillist%d", listmail);
        }
        else
        {
            strcpy(buf, "maillist");
        }
        sethomefile(path, currentuser.userid, buf);
        FILE *listfile=fopen(path,"r");
        if(listfile==NULL) {
            showinfo("不能打开群体信件名单!");
            http_quit();
            return 1;
        }
        printf("开始发送....<br>");
        char *bufid,bufid2[16];
        while(1) {
            bzero(bufid2,16);
            if(fgets(bufid2, 16, listfile)<=0)
                break;
            bufid=trim(bufid2);
            u=getuser(bufid);
            if(u==0) {
                printf("用户%s不存在.<br>",bufid);
                continue;
            }
            strcpy(bufid, u->userid);
            i = post_mail(bufid, title, filename, currentuser.userid, currentuser.username, fromhost, sig-1,1);
            if ( i== -3 )
                printf("[%s]不想收到您的信件,邮件发送失败<br>\n", bufid);
            else
                printf("%s<br>",bufid);
        }
        printf("发送完毕.<br>");

    } else {
        i = post_mail(userid, title, filename, currentuser.userid, currentuser.username, fromhost, sig-1,1);
        /* the next line add by yiyo for deny user's mail */
        if ( i== -3 )
            printf("[%s]不想收到您的信件,邮件发送失败<br>\n", userid);
        // else
        /*add by yiyo for deny user's mail*/
        //if(mode==1) printf("<center>意见或建议发送成功.<br><br>[<a href=javascript:window.close()>关闭本窗口</a>]\n");
        else {
            printf("信件已寄给%s.<br>\n", userid);
            char *appendixlist=getparm("attach");
            char *appendix=strtok(appendixlist,",");
            struct file_to_appendix  a;
            char path[STRLEN];
            if(strstr(userid, "@"))
                strcpy(userid,""); //互联网信件
            while( appendix != NULL ) {
                //bzero(&a,sizeof(struct appendix));
                strcpy(a.appendixname,appendix);
                a.filename=i;
                a.sign=1;
                strcpy(a.path,userid);
                sprintf(path,"%s/file_appendix",UPLOAD_PATH);
                append_record(&a,sizeof(struct appendix),path);
                appendix = strtok( NULL,",");
            }

        }

    }

    if(backup)
        printf("信件已经备份.<br>\n");
    unlink(filename);
    showinfo("恭喜,发送成功!<br><a href=bbsmail>返回收件箱</a>");
    http_quit();
}