私の環境は
サーバーマシン:DocuShare Server 6
クライアントマシン:DocuShareクライアント6、DocuShare Outlookクライアント3、MS Outlook 2007、およびC#アプリケーションがインストールされているWindowsXP。
DocuShare APIを使用してDocuShareサーバーからメールメッセージをダウンロードするC#アプリケーションがあります。
アプリケーションは、docushareメールメッセージをMSGファイルとして正常にダウンロードします。ただし、メールメッセージに長い名前の添付ファイルがある場合(私の場合、添付ファイル名は「New Tzunami Outlook Attachment Extractorユーザーガイド20100902.docx」)、アプリケーションはダウンロード中にWindowsSocketエラーをスローします。添付ファイル名が短い場合、メールメッセージは正常にダウンロードされます。
コードは次のとおりです。
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); 「NewTzunamiOutlookAttachmentExtractorユーザーガイド20100902.docx」という名前の添付ファイルを持つ電子メールをダウンロードしている間。確認のため、添付ファイル名を「ANew Tzunami OutAttachmen 01.docx」にトリミングしましたが、それでも同じエラーが発生しました。
コードobjParentItem.DSDownload(0)は-300値を返し、同時にDocuShareエラーダイアログボックスがポップアップして次のメッセージが表示されます
「Winsockエラー123」