我的应用程序应该将一些电子邮件发送到某个目的地。完成该操作后,我想自动将已发送的邮件移动到特定的文件夹(根据邮件附件中的文档类型)。如果该文件夹不存在,则程序必须创建它,然后将邮件移至新创建的文件夹。问题是,在我创建一个新文件夹并成功将邮件成功首次移动到该文件夹之后,然后当我发送另一封应被移动到所述文件夹的邮件时,程序看不到该文件夹。实际上,Folders方法根本不返回任何文件夹。坦白说,即时通讯出了什么主意。
在调试器中检查时,它说parentFolder.Folders“枚举未产生结果”
我不确定在方法createFolder中创建文件夹后是否应该做更多的事情(例如,更新文件夹列表...)
这是我的代码:
public void moveEmails(string itemType, Boolean itemSent, Outlook.MailItem objMail)
{
Outlook.MAPIFolder folderParent = objMail.Parent as Outlook.MAPIFolder;
Outlook.Folders folders;
Boolean notMoved = true;
objMail.UserProperties.Add("TransferredBy", Outlook.OlUserPropertyType.olText, true, Outlook.OlUserPropertyType.olText);
objMail.UserProperties["TransferredBy"].Value = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
objMail.Save();
if (folderParent.Name != "Inbox")
folderParent = digForInbox(folderParent);
folders = folderParent.Folders;
if (!itemSent)
itemType = "NOT DELIVERED";
foreach (Outlook.MAPIFolder folder in folders)
{
if (folder.Name == itemType)
{
objMail.Move(folder);
notMoved = false;
}
}
if (notMoved)
createFolder(itemType,objMail, folderParent);
}
public void createFolder(string itemType, Outlook.MailItem objMail, Outlook.MAPIFolder folderParent)
{
Outlook.MAPIFolder folderNew;
folderNew = folderParent.Folders.Add( itemType, Outlook.OlDefaultFolders.olFolderInbox ) as Outlook.MAPIFolder;
objMail.Move(folderNew);
}
private Outlook.MAPIFolder digForInbox(Outlook.MAPIFolder folder)
{
Boolean isNotInbox = true;
while(isNotInbox)
{
if(folder.Name != "Inbox")
{
folder = folder.Parent as Outlook.MAPIFolder;
}
else
{
isNotInbox = false;
}
}
return folder;
}
我找到了我的问题的答案:
问题类似于链接中的问题。我没有想到,因为我的邮箱主要是共享邮箱,会以除性能以外的任何其他方式影响它(由于连接到交换服务器)
将其发布为答案
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句