将邮件作为MSG文件下载时发生WinSock错误

时间:2010-10-21 09:44:10

标签: c# sockets .net-2.0 email-attachments

我的环境

服务器端机:DocuShare Server 6

客户端计算机:安装了DocuShare客户端6,DocuShare Outlook客户端3,MS Outlook 2007和我们的C#应用​​程序的Windows XP。

我们有一个C#应用程序,可以使用DocuShare API从DocuShare服务器下载邮件。

应用程序成功将docushare邮件作为MSG文件下载。但是当邮件消息附有长名称时(在我的情况下,附件文件名是 “新Tzunami Outlook附件提取器用户指南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”

1 个答案:

答案 0 :(得分:0)

当使用DsAxess控制台下载相同的邮件消息时,我们得到了相同的WinSock错误,因此无法完成任何操作;)。

我们使用WorldClient邮件应用程序发送电子邮件。我们使用WorldCLient发送了带有“ANew Tzunami OutAttachmen 01.docx”文件名的附件的电子邮件,我们无法下载。为了进行测试,我们使用了另一个应用程序来发送带有相同附件的电子邮件。这次我们使用MS word发送带有相同附件的电子邮件,我们也成功使用C#app和DsAxess控制台下载电子邮件。

如果您对此有任何疑问,请与我们分享。

谢谢你。 普拉卡什