嗯,发现问题并解决了
是由libBBS/bbs_sendmail.c中837行(如下)的process_control_chars引起的,似乎\t被替换成\n了,没细细研究
815 int bbs_sendmail(char *fname, char *title, char *receiver, int isbig5, int noansi,session_t *session)
816 { /* Modified by ming, 96.10.9 KCN,99.12.16 */
817 FILE *fin;
818 char newbuf[PATHLEN];
...
836 while (fgets(gbuf, 255, fin) != NULL) {
837 if(noansi) process_control_chars(gbuf,"\n");
839 if (gbuf[0] == '.' && gbuf[1] == '\n')
840 fputs(". \n", fout);
841 else
842 fputs(gbuf, fout);
843 }
把process_control_chars(gbuf, "\n") 用 if(noansi) my_ansi_filter(gbuf) 替换,并在bbs_sendmail前面加上my_ansi_filter的定义(我从FREE的代码中copy过来的...)
/* copy from flyriver qmail2bbs.c */
void my_ansi_filter(char *source)
{
char result[500];
int i, flag = 0, loc = 0;
int len;
len = strlen(source);
len = len >= sizeof(result) ? sizeof(result) - 1 : len;
for (i = 0; i < len; i++) {
if (source[i] == '\x1B') {
flag = 1;
continue;
} else if (flag == 1 && isalpha(source[i])) {
flag = 0;
continue;
} else if (flag == 1) {
continue;
} else {
result[loc++] = source[i];
}
}
result[loc] = '\0';
strncpy(source, result, loc + 1);
}
【 在 inming (NightElves) 的大作中提到: 】
: 对了,现在系统往外发信内容不见了,变成一个part1.bin的附件,这是怎么回事呢,估计是postfix的配置问题
--
FROM 202.108.12.*