以下のコードは 10 回中 9 回は機能しますが、場合によっては次のエラーが表示されます: サーバー管理者が、同時に開くことができるアイテムの数を制限しています。開いたメッセージを閉じるか、作成中の未送信メッセージから添付ファイルや画像を削除してみてください。
プルしようとしているメールを確認しましたが、それらはすべて通常のメッセージです。打ち合わせなどはありません。私はその種の電子メールのいくつかをきれいにしました。
Microsoft.Office.Interop.Outlook.Application myApp = new Microsoft.Office.Interop.Outlook.Application();
NameSpace mapiNameSpace = myApp.GetNamespace("MAPI");
MAPIFolder myInbox = mapiNameSpace.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
var mail = myInbox.Items;
foreach (object items in mail)
{
var item = items as MailItem;
if (item != null)
{
if (!senderEmail.Equals(String.Empty) && senderName.Equals(String.Empty) && emailSubject.Equals(String.Empty))
{
try
{
if (((MailItem)item).SenderEmailAddress.ToLower().Contains(senderEmail.ToLower()))
{
if (count <= 40)
{
if (((MailItem)item).SenderEmailAddress.Contains(""))
{
var senderEmailAddress = ((MailItem)item).SenderEmailAddress.Remove(((MailItem)item).SenderEmailAddress.IndexOf(""), 32);
resultsGrid.Rows.Add(count, ((MailItem)item).Subject, ((MailItem)item).SenderName, senderEmailAddress, ((MailItem)item).CreationTime.ToString());
resultsGrid.AutoResizeColumns();
}
else if (((MailItem)item).SenderEmailAddress.Contains(""))
{
var senderEmailAddress = ((MailItem)item).SenderEmailAddress.Remove(((MailItem)item).SenderEmailAddress.IndexOf(""), 75);
resultsGrid.Rows.Add(count, ((MailItem)item).Subject, ((MailItem)item).SenderName, senderEmailAddress, ((MailItem)item).CreationTime.ToString());
resultsGrid.AutoResizeColumns();
}
else
{
resultsGrid.Rows.Add(count, ((MailItem)item).Subject, ((MailItem)item).SenderName, ((MailItem)item).SenderEmailAddress, ((MailItem)item).CreationTime.ToString());
resultsGrid.AutoResizeColumns();
}
count++;
}
else
{
resultsGrid.Rows.Add(String.Empty, "Total items in Mailbox: " + myInbox.Items.Count, String.Empty, String.Empty, String.Empty);
break;
}
}
}
catch (COMException e)
{
resultsGrid.Rows.Add(e.Message);
resultsGrid.AutoResizeColumns();
break;
}
continue;
}
}