我的应用程序应该发送一些电子邮件到某个目的地。在该操作之后,我想自动将发送的邮件移动到特定文件夹(基于邮件附件中的文档类型)。如果文件夹不存在,则程序必须创建它,然后将邮件移动到新创建的文件夹。问题是,在我创建一个新文件夹并首次将邮件移动到它之后,当我发送了应该移动到所述文件夹的邮件时,程序没有看到该文件夹。事实上,文件夹方法根本不会返回任何文件夹。 坦率地说,我的想法是错误的。
在检入调试器时,它表示parentFolder.Folders" Enumeration没有产生任何结果"
我不确定在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;
}
答案 0 :(得分:1)
我找到了问题的答案:
问题类似于链接中的问题。我没有想到,因为我的邮箱主要是共享的邮箱,它会以任何其他方式影响它,而不是性能(由于连接到交换服务器)
将此作为回答发布
答案 1 :(得分:0)
我建议使用MailItem类的SaveSentMessageFolder属性。它允许设置一个Folder对象,该对象表示发送后将保存电子邮件副本的文件夹。您还可以找到以下文章: