BBS 向外部邮箱转带有附件的邮件时,附件不能打开。
使用的是 kbs-2.0dev 2007 年 9 月的 snapshot。
对比了水木转信和我们自己 BBS 转信的邮件头,发现区别如下:
水木:
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_1242919283_365792516.attach"
From: <id@newsmth.net>
To: to@example.com
Date: Thu, 21 May 2009 23:21:24 +0800
Message-Id: <1242919284.32759@newsmth.net>
Subject: mail subject
X-OriginalArrivalTime: 21 May 2009 15:21:24.0887 (UTC) FILETIME=[CDD88A70:01C9DA27]
X-CM-TRANSID: QcCowLD7mQpxcRVKMSe4DA--.74S2
X-Coremail-Antispam: 1UD129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73
// 这里还有若干行 X-Coremail-Antispam 的内容
我们的:
From: <id@ourbbs.org>
To: to@example.com
Date: Thu May 21 23:08:43 2009
Reply-To: <id@ourbbs.org>
Subject: mail subject
MIME-Version: 1.0
Content-Type: multipart/mixed;
Message-Id: <20090521150843.B2C385064E@ourbbs.org>
X-CM-TRANSID: NcCowLBb5ASCbhVKLTicCw--.15270S2
X-Coremail-Antispam: 1UD129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73
// 这里还有若干行 X-Coremail-Antispam 的内容
boundary="----=_1242918523_1053890096.attach"
我们 BBS 转信的邮件头中,"boundary" 这一行和 Content-Type 被分开了。
把有问题的邮件存成 .eml 之后,再调整 "boundary" 这行的位置,并在前面加上 "\t",打开附件就正常了。
另外对比了 libBBS/bbs_sendmail.c 的代码,发现 svn revision 10401(08年6月修改)的修改在 "boundary" 前面添加了 4 个空格:
"...Content-Type: multipart/mixed;\r\n\t boundary=\"%s\"\r\n..."
请问附件不正确的问题 10401 的修改能解决么?
而且不可理解的是,Content-Type 和 "boundary" 之间被 Message-Id 隔断,"boundary" 前面的 "\t" 也没了。有没有可能是其他转信设置的问题?
--
FROM 211.99.222.*