【 以下文字转载自 twInstallBBS 讨论区 】
发信人: wctang.bbs@bbs.cis.nctu.edu.tw (wctang), 信区: twInstallBBS
标 题: RFC2045 和 bbs mail header 的问题…
发信站: 交大资科_BBS (Sun Mar 23 04:49:39 2003)
转信站: Feeling!news.feeling.smth.org!maily.cic.tsinghua.edu.cn!sjc70.webusenet
出 处: infopc15.csie.nctu.edu.tw
之前有大大(paulliu, gslin)提到过RFC2045和bbs news转信的问题…
而这个问题的另一方面,就是bbs mail header的部分。
其实问题和解法都是类似的。
目前的bbs所送出的mail,header中都少了MIME中有关charset的部分。
而这也就造成了有些mail client(outlook express...)在收信时,因
不知道内容是什麽语系,而造成误判,出现乱码。虽然现在的mail client
都可以手动切换语系,而且自动判断正确性也都蛮高的,
不过一来比较麻烦,二来也为了符合标准,所以这个
问题也最好解决。
因为台湾所有的bbs都是用big5做为charset,
(真希望有用utf-8来玩的)
所以问题也就简单了,我以Maple itoc的版本来修改,不过mail的部分似
乎很久没有改过了(档头的update是95/12/15),所以我觉得大概Maple系
列都大同小异吧…
目前的我修改的部分,是mail.c中的 389行起,修改如下:
/* Thor.990125: 尽可能的像 RFC822 & sendmail的作法, 免得别人不接:p */
fprintf(fw, "From: %s\r\nTo: %s\r\nSubject: %s\r\nX-Sender: %s(%s)\r\n"
"Date: %s\r\nMessage-Id: <%s@%s>\r\n",
from, rcpt, title, cuser.userid, cuser.username,
Atime(&stamp), msgid, str_host);
+ fprintf(fw, "Mime-Version: 1.0\r\n");
+ fprintf(fw, "Content-Type: text/plain; charset=\"big5\"\r\n");
+ fprintf(fw, "Content-Transfer-Encoding: 8bit\r\n");
fprintf(fw, "X-Disclaimer: [%s] 对本信内容恕不负责\r\n\r\n", str_site);
主要是加上这三行。
而为了提醒还有蛮多bbs站对於之前的问题还没有解决,所以下面我把之前的
有关news转信的问题再引一次…
相关问题可以看
http://cnal.csie.nctu.edu.tw/~paulliu/ ==================================================================
本文引用 zhbig.bbs@Deer.twbbs.org 在 SYSOP 板所提供的资讯。
依据 RFC 2045 (Nov 1996) 内对於 MIME 相关的说明,我们强烈建议站长修改
bbslink.c,让新版的 tin 以及 Outlook Express 的阅读更正常。
对於繁体中文 BBS 而言,一个简单的解决方式是在每篇发出文章的 Header 里面
加上下面三行:
Mime-Version: 1.0
Content-Type: text/plain; charset="big5"
Content-Transfer-Encoding: 8bit
所以 bbslink.c 的 post_article() 可以加入下面三行,以符合 RFC 2045 所提
供的建议。
fprintf(NNTPwfp, "Message-ID: <%s>\r\n", sover->msgid);
+ fprintf(NNTPwfp, "Mime-Version: 1.0\r\n");
+ fprintf(NNTPwfp, "Content-Type: text/plain; charset=\"big5\"\r\n");
+ fprintf(NNTPwfp, "Content-Transfer-Encoding: 8bit\r\n");
fprintf(NNTPwfp, "X-Filename: %s/%s\r\n", sover->board, sover->filename);
--