C# 展望 ;创建文件夹后无法移动电子邮件
本文关键字:移动 电子邮件 文件夹 展望 创建 | 更新日期: 2023-09-27 18:33:14
我的应用程序应该向某个目的地发送一些电子邮件。在该操作之后,我想自动将已发送的邮件移动到特定文件夹(基于邮件附件中的文档类型)。如果文件夹不存在,则程序必须创建它,然后将邮件移动到新创建的文件夹。问题是,在我创建一个新文件夹并首次成功将邮件移动到该文件夹后,当我发送另一封应该移动到该文件夹的邮件时,程序看不到该文件夹。事实上,文件夹方法根本不返回任何文件夹。坦率地说,我不知道有什么问题。
签入调试器时,它说 parentFolder.Folder "枚举未产生任何结果"
我不确定在方法创建文件夹后是否应该做更多的事情(即,更新文件夹列表...
这是我的代码:
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;
}
我找到了问题的答案:
https://social.msdn.microsoft.com/forums/windows/en-us/180c000c-524a-45dd-88fe-88b470be3597/accessing-subfolders-within-shared-mailbox?forum=outlookdev
该问题与链接中的问题类似。我没有想到,因为我的邮箱主要是共享的,除了性能之外,还会以任何其他方式影响它(由于连接到交换服务器)
将此作为答案发布
我建议使用 MailItem 类的 SaveSentMessageFolder 属性。它允许设置一个 Folder 对象,该对象表示发送后将保存电子邮件副本的文件夹。此外,您可能会发现以下文章很有帮助:
- 如何:在使用 C# 或 VB.NET 发送之前更改 Outlook 电子邮件
- 如何:在 Outlook 中创建新文件夹