我的环境是
服务器机器:DocuShare Server 6
客户端机器:安装了 DocuShare 客户端 6、DocuShare Outlook 客户端 3、MS Outlook 2007 和我们的 C# 应用程序的 Windows XP。
我们有一个 C# 应用程序可以使用 DocuShare API 从 DocuShare 服务器下载邮件消息。
该应用程序成功地将 docushare 邮件消息下载为 MSG 文件。但是当邮件的附件名称很长时(在我的例子中,附件文件名为“New Tzunami Outlook Attachment Extractor User Guide 20100902.docx”),下载时应用程序会抛出 Windows Socket 错误。如果附件文件名较短,则邮件信息下载成功。
以下是代码:
private void btnDownloadMails_Click(object sender, EventArgs e)
{
MailArgument mailArg = new MailArgument();
mailArg.server = textServer.Text;
mailArg.user = textUser.Text;
mailArg.password = textPwd.Text;
DownloadMailAsMsg(mailArg);
}
void DownloadMailAsMsg(object s)
{
MailArgument mailArg = s as MailArgument;
long status = 0;
DSServerMap.Server dsserver = new DSServerMap.Server();
if (!SelectMappedServer(ref dsserver, mailArg.server))
return;
dsserver.DocuShareAddress = mailArg.server;
dsserver.UserName = mailArg.user;
dsserver.Password = mailArg.password;
dsserver.Domain = "DocuShare";
status = dsserver.Logon();
if (status == 0)
{
IItemObj objParentItem;
string[] emailHan = { "MailMessage-2919", "MailMessage-2924", "MailMessage-2925", "MailMessage-2926", "MailMessage-2926", "MailMessage-15", "MailMessage-30", "MailMessage-31" };
foreach (string handnum in emailHan)
{
objParentItem = (IItemObj)dsserver.CreateObject(handnum);
DSGATEWAYLib.IGatewayHandler gateway = (DSGATEWAYLib.IGatewayHandler)dsserver.Open();
objParentItem.AttachGateway(gateway, true);
objParentItem.Name = @"D:\emtest\" + handnum + ".msg";
int flag = objParentItem.DSDownload(0);
}
}
}
我坚持的地方是: int flag = objParentItem.DSDownload(0); 在下载附件文件名为“New Tzunami Outlook Attachment Extractor User Guide 20100902.docx”的电子邮件时。为了检查,我们将附件文件名修整为“ANew Tzunami OutAttachmen 01.docx”,但仍然出现同样的错误。
代码 objParentItem.DSDownload(0) 返回 -300 值,同时弹出 DocuShare 错误对话框并显示以下消息
“Winsock 错误 123”