VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - Microsoft MAPI 控件中的一个Bug
发表评论(0)作者:程凤玲 肖义, 平台:VB6.0+Win98, 阅读:7812, 日期:2001-03-02
Microsoft MAPI 控件中的一个Bug
山东省信息总公司
程凤玲 肖义
---- 在利用微软的Visual Basic或Visual C++编写收发电子邮件的程序时,经常需要用到微软邮件应用程序接口(MAPI)控件组。该控件组包括两个控件:MapiSession和MapiMessages,分别提供了登录、结束一次邮件会话的例程和发送、接收、撰写以及读取邮件的各种方法,为我们编写邮件应用程序和在应用程序中使用邮件功能提供了极大的便利。

---- 我们在使用这一控件组的过程中发现在MapiMessages控件中有一个Bug:如果在用户的邮箱内有连续两封信带有相同名字的附件文件,而该文件名又恰好是由四个汉字加一个不超过三个字节的扩展名组成,则如下的一段Visual Basic程序将在读取第二封邮件的时候出错:

MyMess.Fetch
k=0
While k0 Then
        MyMess.AttachmentIndex=0
        Debug.Print(MyMess.AttachmentPathname)
    End if
    k=k+1
Wend

---- 出错的原因估计是两个附件文件存放时发生文件名冲突所至,但如果附件文件名的第七、八字节不是汉字,则这一错误就不会发生了,因为此时控件方法会自动将第二个附件文件改名存放。绕过这一个Bug的方法也很简单:只要尽量避免使用汉字作文件名,至少不使用恰好四个汉字作文件名,就可以避免程序出错了。其实这也是程序员在设计应用程序时所应当遵守的一条普遍法则,因为市面上许多应用软件和开发工具,它的汉化版本的测试远没有其西文版本做的彻底,特别是在处理中文文件名的时候。