我想做以下事情:
如果收到新邮件,则应检查邮件主题,如果任何子文件夹中已存在相同主题,则邮件应移至同一子文件夹。如果找不到相同的邮件,它将保留在正常的收件箱文件夹中。 这样的目标文件夹与邮件没有逻辑连接,因此不会像邮件或邮件发件人那样调用它。它只是一个文件夹,其中包含一个或相同主题的邮件。
我通过浏览这个论坛来管理 - 识别事件,邮件主题并执行实际操作。 我没有管理的是:
1。创建搜索逻辑以查找任何文件夹中具有相同主题的现有邮件
2.返回找到的文件夹以将其用作目标目的地。
这是它到现在为止的样子,它设法显示一条消息......
Private WithEvents Items As Outlook.Items
Private Sub Application_Startup()
Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set Items = objNS.GetDefaultFolder(olFolderInbox).Items
End Sub
Private Sub Items_ItemAdd(ByVal Item As Object)
On Error GoTo ErrorHandler
Dim Msg As Outlook.MailItem
Dim MoveToFolder As Outlook.MAPIFolder
If TypeName(Item) = "MailItem" Then
Set Msg = Item
MsgBox "Here the folder must be found for '" & Msg.Subject & "'."
'Msg.Move MoveToFolder
End If
ProgramExit:
Exit Sub
ErrorHandler:
MsgBox Err.Number & " - " & Err.Description
Resume ProgramExit
End Sub
顶部:是否有一种特定的智能方法可以在其他事件上执行相同操作,例如“SentMails”?
非常感谢任何支持。
拉尔夫
答案 0 :(得分:0)
您可以使用Application类的AdvancedSearch方法,该方法根据指定的DAV搜索和定位(DASL)搜索字符串执行搜索。您可以在Advanced search in Outlook programmatically: C#, VB.NET文章中详细了解该方法。因此,您可以找到具有相同主题的项目,然后获取其Parent
属性值,该值代表存储它们的文件夹。
Public blnSearchComp As Boolean
Private Sub Application_AdvancedSearchComplete(ByVal SearchObject As Search)
Debug.Print "The AdvancedSearchComplete Event fired"
If SearchObject.Tag = "Test" Then
m_SearchComplete = True
End If
End Sub
Sub TestAdvancedSearchComplete()
Dim sch As Outlook.Search
Dim rsts As Outlook.Results
Dim i As Integer
blnSearchComp = False
Const strF As String = "urn:schemas:mailheader:subject = 'Test'"
Const strS As String = "Inbox"
Set sch = Application.AdvancedSearch(strS, strF, “Test”)
While blnSearchComp = False
DoEvents
Wend
Set rsts = sch.Results
For i = 1 To rsts.Count
Debug.Print rsts.Item(i).SenderName
Next
End Sub
是否有特定的智能方法可以在其他事件上执行相同操作,例如"已发送邮件"?
您可以考虑处理Application类的ItemSend事件,该事件在用户通过Inspector发送Microsoft Outlook项目时触发(在检查器关闭之前,但在用户单击“发送”按钮之后)或者Outlook项目的发送方法。在事件处理程序中,您可以设置SaveSentMessageFolder属性,该属性允许设置一个Folder对象,该对象表示在发送后将保存电子邮件副本的文件夹。