【问题标题】:WinSock error occured while downloading mail message as MSG file将邮件消息下载为 MSG 文件时发生 WinSock 错误
【发布时间】:2010-10-21 09:44:10
【问题描述】:

我的环境是

服务器机器: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”

【问题讨论】:

  • 你能指定错误/异常吗?
  • 我已经更新了这个问题。请查看那里的例外情况。谢谢。
  • 挖掘dipper后,在下载电子邮件时,api也会尝试下载其附件,但DocuShare错误对话框窗口显示不同的附件文件名,将最后一个空格字符替换为0x09,即制表符。
  • 最后一个空格字符在 01.docx 之前。

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


【解决方案1】:

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

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

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

谢谢。 普拉卡什

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 2012-09-19
    相关资源
    最近更新 更多