如何从一串用户中删除电子邮件?

How to delete emails from a string of users?

我如何浏览这个“不确定的 5-10...”发件人列表并删除他们的邮件:

mySenders =" Dan Wilson, Tom Hanks, Alisa Milano, Jessica Alba, Torrid, Captain America"

下面的代码适用于单个发件人。

Sub MoveItems()
    Dim myNameSpace As Outlook.NameSpace
    Dim myInbox As Outlook.Folder
    Dim myDestFolder As Outlook.Folder
    Dim myItems As Outlook.Items
    Dim myItem As Object

    Set myNameSpace = Application.GetNamespace("MAPI")
    Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
    Set myItems = myInbox.Items
    Set myDestFolder = myNameSpace.GetDefaultFolder(olFolderDeletedItems)
    'how to loop here?
    Set myItem = myItems.Find("[SenderName] = 'Kmart'")
    While TypeName(myItem) <> "Nothing"
        myItem.Move myDestFolder
        Set myItem = myItems.FindNext
    Wend
End Sub

有点困惑。但要从多个发件人删除消息,请添加第二个 While .. Wend 并将其修改为使用 myItem.Delete

示例:

Outlook 2010

上测试
Option Explicit
Sub DeleteItems()
    Dim myNameSpace As Outlook.NameSpace
    Dim myInbox As Outlook.Folder
    Dim myItems As Outlook.Items
    Dim myItem As Object

    Set myNameSpace = Application.GetNamespace("MAPI")
    Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
    Set myItems = myInbox.Items

    '// loop for each sender
    Set myItem = myItems.Find("[SenderName] = 'Dan Wilson'")
    While TypeName(myItem) <> "Nothing"
        myItem.Delete
        Set myItem = myItems.FindNext
    Wend

    '// Loop Next Sender
    Set myItem = myItems.Find("[SenderName] = 'Tom Hanks'")
    While TypeName(myItem) <> "Nothing"
        myItem.Delete
        Set myItem = myItems.FindNext
    Wend

    Set myItem = myItems.Find("[SenderName] = 'Alisa Milano'")
    While TypeName(myItem) <> "Nothing"
        myItem.Delete
        Set myItem = myItems.FindNext
    Wend

    ' More here
End Sub

您可以循环遍历基于 mySenders 的数组。

Option Explicit

Sub MoveItems()

    Dim myNameSpace As Namespace
    Dim myInbox As folder
    Dim myDestFolder As folder
    Dim myItems As Items
    Dim myItem As Object

    Dim mySenders() As String
    Dim i As Long

    Set myNameSpace = GetNamespace("MAPI")
    Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
    Set myItems = myInbox.Items
    Set myDestFolder = myNameSpace.GetDefaultFolder(olFolderDeletedItems)

    mySenders = Split("Dan Wilson,Tom Hanks,Alisa Milano,Jessica Alba,Torrid,Captain America", ",")

    For i = LBound(mySenders) To UBound(mySenders)

        Debug.Print i & " - " & mySenders(i)

        Set myItem = myItems.Find("[SenderName] = """ & mySenders(i) & """")
        While TypeName(myItem) <> "Nothing"
            myItem.Move myDestFolder
            Set myItem = myItems.FindNext
        Wend

    Next

End Sub

您需要准确的姓名。

Sub display_SenderName()

    Dim currItem As Object

    Select Case ActiveWindow.Class

        Case olExplorer
            ' The active window is a list of messages (folder)
            ' There might be several selected messages
            ' Here only one is processed
            Set currItem = ActiveExplorer.Selection(1)
            Debug.Print currItem.Subject
            Debug.Print currItem.senderName

        Case olInspector
            Set currItem = ActiveInspector.currentItem
            Debug.Print currItem.Subject
            Debug.Print currItem.senderName

    End Select

End Sub