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>]"); }
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; }
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(); }