How to automatically flag emails based on specific attachment in outlook?
When receiving some emails with specific important attachment, you may need to flag them out, so that, you can quickly and easily find them for flow-up. This article, I will talk about an easy way to automatically flag the emails which attachments with specific names.
To auto flag the emails which contain the specific attachment, please apply the following VBA code:
1. Launch the Outlook, and then hold down the ALT + F11 keys to open the Microsoft Visual Basic for Applications window.
2. In the Microsoft Visual Basic for Applications window, double click ThisOutlookSession from the Project1(VbaProject.OTM) pane to open a new mode, and then copy and paste the following code into the blank module.
VBA code: Auto flag the emails based on specific attachment:
Public WithEvents GMailItems As Outlook.Items Private Sub Application_Startup() Set GMailItems = Outlook.Application.Session.GetDefaultFolder(olFolderInbox).Items End Sub Private Sub GMailItems_ItemAdd(ByVal Item As Object) If Item.Class <> olMail Then Exit Sub FlagEmail_SpecificAttachments Item End Sub Sub FlagEmail_SpecificAttachments(Mail As Outlook.MailItem) Dim xAttachment As Outlook.Attachment Dim xExt As String Dim xFileName As String If Mail.Attachments.Count = 0 Then Exit Sub For Each xAttachment In Mail.Attachments xExt = SplitPath(xAttachment.FileName, 2) xFileName = SplitPath(xAttachment.FileName, 1) Select Case xExt Case "txt", "xlsx", "docx", "pdf" 'Add the file extension as you need If InStr(LCase(xFileName), LCase("KTO")) > 0 Then 'Change the text of the attachment name With Mail .ReminderSet = True .ReminderTime = Now + 1 .MarkAsTask olMarkTomorrow .Save End With End If End Select Next End Sub Public Function SplitPath(FullPath As String, ResultFlag As Integer) As String Dim xSplitPos As Integer, xDotPos As Integer xSplitPos = InStrRev(FullPath, "/") xDotPos = InStrRev(FullPath, ".") Select Case ResultFlag Case 0 SplitPath = Left(FullPath, xSplitPos - 1) Case 1 If xDotPos = 0 Then xDotPos = Len(FullPath) + 1 SplitPath = Mid(FullPath, xSplitPos + 1, xDotPos - xSplitPos - 1) Case 2 If xDotPos = 0 Then xDotPos = Len(FullPath) SplitPath = Mid(FullPath, xDotPos + 1) Case Else Err.Raise vbObjectError + 1, "SplitPath Function", "Invalid Parameter!" End Select End Function
Note: In the above code, you can change the file extension and attachment file name to your need.
3. Then save the code, and restart the Outlook to make the code take effect, now, when receiving the emails which attachments’ names contain the specified text, Outlook will auto flag this email for follow-up, see screenshot:
Kutools for Outlook
More than 100 Advanced Functions for Outlook 2010, 2013, 2016, 2019 and 365