• Outlook User
  • New Outlook app
  • Outlook.com
  • Outlook Mac
  • Outlook & iCloud
  • Developer
  • Microsoft 365 Admin
    • Common Problems
    • Microsoft 365
    • Outlook BCM
    • Utilities & Addins

Get Outlook's Internet Headers using VBA or PowerShell

Slipstick Systems

› Developer › Code Samples › Get Outlook’s Internet Headers using VBA or PowerShell

Last reviewed on November 25, 2024     45 Comments

Use this code sample and function to display the Internet header of selected message in a new message form.

Read Internet Header

Tested in Outlook 2013, 2019, 2021, and Outlook 365, also works in Outlook 2010 and 2007.

The PowerShell version does not require you to change Outlook security settings. to use, select one or more messages then run the script.

clear

$olApp = new-object -comobject outlook.application
$PropName = "http://schemas.microsoft.com/mapi/proptag/0x007D001E"

$olFolder = ($olApp.ActiveExplorer())
$Selection = $olFolder.Selection

foreach ($olMsg in $Selection) {
$oPA = $olMsg.PropertyAccessor
$value = $oPA.GetProperty($PropName)

$Mail = $olApp.CreateItem(0)
$ndatetime = Get-Date -Format g
$Mail.Subject = $olMsg.subject + ' ' +$ndatetime 
$Mail.Body = $value
$Mail.display()
}

Save it as a *.ps1 then right-click and choose Run with PowerShell.

Or create a shortcut and pin it to the taskbar or Start menu. The target will be
powershell.exe -file "C:\path\to\filename.ps1"

Note: Windows will add the full path to powershell.exe to the shortcut.
Create a shortcut to run the powershell script

 

VBA method to get message header

Sub ViewInternetHeader()
    Dim olItem As Outlook.MailItem, olMsg As Outlook.MailItem
    Dim strheader As String

    For Each olItem In Application.ActiveExplorer.Selection
        strheader = GetInetHeaders(olItem)
    
        Set olMsg = Application.CreateItem(olMailItem)
        With olMsg 
            .BodyFormat = olFormatPlain
            .Body = strheader
            .Display
        End With
    Next
    Set olMsg = Nothing
End Sub


Function GetInetHeaders(olkMsg As Outlook.MailItem) As String
    ' Purpose: Returns the internet headers of a message.'
    ' Written: 4/28/2009'
    ' Author:  BlueDevilFan'
    ' //techniclee.wordpress.com/
    ' Outlook: 2007'
    Const PR_TRANSPORT_MESSAGE_HEADERS = "http://schemas.microsoft.com/mapi/proptag/0x007D001E"
    Dim olkPA As Outlook.PropertyAccessor
    Set olkPA = olkMsg.PropertyAccessor
    GetInetHeaders = olkPA.GetProperty(PR_TRANSPORT_MESSAGE_HEADERS)
    Set olkPA = Nothing
End Function

Write the header to a text file

This version of the above macro writes the header to a text file and opens it in Notepad. (You'll need the Function GetInetHeaders from above).

If you want to open it in another Text application, replace "notepad " with the file path and name, making sure to leave the space after the filename.

  Sub ViewInternetHeader()
    Dim olItem As Outlook.MailItem, olMsg As Outlook.MailItem
    Dim strheader As String

    For Each olItem In Application.ActiveExplorer.Selection
        strheader = GetInetHeaders(olItem)
    
' ### write to a text file
Dim FSO As Object
Dim strFile As String
Dim strFolderpath As String

Set FSO = CreateObject("Scripting.FileSystemObject")

' save to documents
strFolderpath = CreateObject("WScript.Shell").SpecialFolders(16)
    strFile = strFolderpath & "\header.txt"
Set objFile = FSO.CreateTextFile(strFile, True) ' True overwrites the file
Debug.Print strFile

    objFile.Write "" & strheader
    objFile.Close
     
 Call Shell("notepad.exe " & strFile, vbNormalFocus)
  
' ### end write to text file
       
    Next
    Set olMsg = Nothing
End Sub

 

Get Specific Values from the header

But combining RegEx and the macro above we can get specific values out of the header. In this example, we're getting the address in the Return-Path.

If you need two or more values, you'll use a Case statement to loop through the header. See Get two (or more) values from a message for an example.

Sub GetValuesFromInternetHeader()
    Dim olItem As Outlook.MailItem, olMsg As Outlook.MailItem
    Dim strHeader As String
    Dim strResult As String
    Dim strResults As String
    Dim Reg1 As Object
    Dim M1 As Object
    Dim M As Object
 
    For Each olItem In Application.ActiveExplorer.Selection
        strHeader = GetInetHeaders(olItem)
    
      Set Reg1 = CreateObject("VBScript.RegExp")
    With Reg1
        .Pattern = "(Return-Path:\s(.*))"
        .Global = True
    End With
    
    If Reg1.test(strHeader) Then
    
        Set M1 = Reg1.Execute(strHeader)
        For Each M In M1
' 0 = everything in the first set of ()
' 1 = everything in the second set of ()
        Debug.Print M.SubMatches(0)
        strResult = M.SubMatches(1)

' do something with the result
        strResults = strResult & vbCrLf & vbCrLf & strResults
        Next
    End If
    
    Next

        Set olMsg = Application.CreateItem(olMailItem)
        With olMsg
            .BodyFormat = olFormatPlain
            .Body = strResults
            .Display
        End With
    Set olMsg = Nothing
End Sub

Function GetInetHeaders(olkMsg As Outlook.MailItem) As String
    ' Purpose: Returns the internet headers of a message.'
    ' Written: 4/28/2009'
    ' Author:  BlueDevilFan'
    ' //techniclee.wordpress.com/
    ' Outlook: 2007'
    Const PR_TRANSPORT_MESSAGE_HEADERS = "http://schemas.microsoft.com/mapi/proptag/0x007D001E"
    Dim olkPA As Outlook.propertyAccessor
    Set olkPA = olkMsg.propertyAccessor
    GetInetHeaders = olkPA.GetProperty(PR_TRANSPORT_MESSAGE_HEADERS)
    Set olkPA = Nothing
End Function

 

Send a Spam Report

If you need to send a spam report to your ISP, you can use a macro to automate it. This macro will work on one message or a selection of messages.

If the macro is not creating a body that can be processed by the reporting service, try changing the 0x007D001E value to 0x007D001F. This returns PR_TRANSPORT_MESSAGE_HEADERS_W instead of PR_TRANSPORT_MESSAGE_HEADERS. See Geldner's thread and answer here: Problem submitting SPAM using Outlook VBA Form

Sub ForwardSpam()
    Dim olItem As Outlook.MailItem, olMsg As Outlook.MailItem
    Dim strHeader As String
    Dim strFWHeader As String
    Dim strNote As String

    For Each olItem In Application.ActiveExplorer.Selection
        strHeader = GetInetHeaders(olItem)

    strNote = "boilerplate note, if needed"
        
      Set olMsg = olItem.Forward
       With olMsg
        .To = "report@address.com"
        .BodyFormat = olFormatPlain
        .Body = strNote & vbCrLf & vbCrLf & strHeader & vbCrLf & vbCrLf & olItem.Body
        .Display ' change to .send when satisfied
       End With
    olItem.Delete
  Next
    Set olMsg = Nothing
End Sub

Function GetInetHeaders(olkMsg As Outlook.MailItem) As String
    ' Purpose: Returns the internet headers of a message.'
    ' Written: 4/28/2009'
    ' Author:  BlueDevilFan'
    ' //techniclee.wordpress.com/
    ' Outlook: 2007'
    Const PR_TRANSPORT_MESSAGE_HEADERS = "http://schemas.microsoft.com/mapi/proptag/0x007D001E"
    Dim olkPA As Outlook.propertyAccessor
    Set olkPA = olkMsg.propertyAccessor
    GetInetHeaders = olkPA.GetProperty(PR_TRANSPORT_MESSAGE_HEADERS)
    Set olkPA = Nothing
End Function

 

Using PowerShell Scripts

To use PowerShell scripts with Outlook, start typing PowerShell on the start menu and open Windows PowerShell when it comes up. Windows PowerShell ISE has a script pane at the top, which is useful if you want to edit the script.

Paste the entire script in the PowerShell window and press Enter or the Run button if using PowerShell ISE.
bulk change contact fields

PowerShell ise

Note: PowerShell scripts will not work with new Outlook or Outlook on the web.

Saving PowerShell Scripts

If you want to save the script as a .ps1 file, paste it into Notepad and save it with the extension .ps1. To open it in the PowerShell IDE, type PowerShell on the start menu and click on Windows PowerShell IDE when the PowerShell app is found. Paste the script in the editing window.

To use it, you need to allow local scripts by running this command:

Set-ExecutionPolicy RemoteSigned

To run your saved .ps1 file, right-click on the script and choose Run with PowerShell.

How to use macros

First: You will need macro security set to low during testing.

To check your macro security in Outlook 2010 or 2013, go to File, Options, Trust Center and open Trust Center Settings, and change the Macro Settings. In Outlook 2007 and older, it’s at Tools, Macro Security.

After you test the macro and see that it works, you can either leave macro security set to low or sign the macro.

Open the VBA Editor by pressing Alt+F11 on your keyboard.

To put the code in a module:

  1. Right click on Project1 and choose Insert > Module
  2. Copy and paste the macro into the new module.

More information as well as screenshots are at How to use the VBA Editor

More Information

Retrieving Internet Headers Using VBA in Outlook 2007/2010 Includes a code sample to use with Run a Script rule.

For Outlook 2003 and older, see Get Internet header VBA code sample for Outlook 2003.

Get Outlook's Internet Headers using VBA or PowerShell was last modified: November 25th, 2024 by Diane Poremsky
Post Views: 51

Related Posts:

  • View the CC or BCC Addresses in a Sent Message
  • Use VBA code sample to view Outlook's Internet Header.
    Get the Internet Header VBA Code Sample for Outlook
  • Use an Outlook Macro to Send Files by Email
  • Change the email account on received email

About Diane Poremsky

A Microsoft Outlook Most Valuable Professional (MVP) since 1999, Diane is the author of several books, including Outlook 2013 Absolute Beginners Book. She also created video training CDs and online training classes for Microsoft Outlook. You can find her helping people online in Outlook Forums as well as in the Microsoft Answers and TechNet forums.

Comments

  1. Frederic says

    September 22, 2024 at 1:09 pm

    It would be nice to be able to get a specific part of the Internet Headers, for instance the Reply-To adress, and to display it in a new column (custom view). Very useful against spoofing ! I have tried to design a custom form for this purpose... but to no avail...

    Reply
    • Diane Poremsky says

      September 23, 2024 at 12:30 am

      That is possible, using propertyaccessor or regex to find a value in the header.
      https://www.slipstick.com/developer/read-mapi-properties-exposed-outlooks-object-model/

      https://www.slipstick.com/developer/code-samples/outlooks-internet-headers/#values
      use .Pattern = "(Reply-To:\s(.*))"

      Reply
  2. Tom Geldner says

    September 9, 2022 at 4:07 pm

    Is there an easy way to mod the Spam Report macro so that it strips any blank lines from the header when creating the email report? Outlook, for some reason, often creates blank lines in headers and it causes SPAMCOP.NET to choke.

    Reply
  3. steve says

    April 22, 2022 at 11:24 am

    this is excellent.
    How do I create a text file with the exact same information as the email that the 1st macro made?

    Reply
    • Diane Poremsky says

      April 22, 2022 at 12:11 pm

      Use this in place of the code that creates a message in the first macro

      ' ### write to a text file
      Dim FSO As Object
      Dim strFile As String
      Dim strFolderpath As String
      
      Set FSO = CreateObject("Scripting.FileSystemObject")
      
      ' save to documents
      strFolderpath = CreateObject("WScript.Shell").SpecialFolders(16)
          strFile = strFolderpath & "\header.txt"
      Set objFile = FSO.CreateTextFile(strFile, True) ' use False if you don't want to overwrite
      Debug.Print strFile
      
          objFile.Write "" & strheader
          objFile.Close
       
       Call Shell("notepad.exe " & strFile, vbNormalFocus)
        
      ' ### end write to text file
      
      Reply
      • Steven says

        April 22, 2022 at 12:32 pm

        wow, thanks.
        very helpful.

      • Steven says

        April 22, 2022 at 12:41 pm

        So much information! Wow.
        Is there any way to filter the header and only write the date/time received to the text file? Is there a way to break out each piece of information, like recipient?, sender?
        Are all of these 'Objects'?

      • Diane Poremsky says

        April 22, 2022 at 1:12 pm

        You can get anything out of the header using regex, but the common fields are in vba - receivedtime, subject, sendername and senderemailaddress, recipient all are stored in fields accessible by VBA.
        Get the fields, then write the strings to the text file.
        With olItem
        strName = .SenderName
        strSender = .SenderEmailAddress
        strTime = .ReceivedTime
        End With

  4. SteveB says

    October 29, 2019 at 4:26 pm

    I just figured out that it'll work..... just not with a user form.
    Would you be willing to modify it to work with a user form, or to put an output into a user form/label on a form?

    Reply
  5. Steve Buckley says

    October 29, 2019 at 4:18 pm

    Hi.
    In trying the code for the first one above, I get a run time error on the
    .display under the With operation.
    It tells me that it cannot perform that operation because a dialogue box is open, and needs to be closed. I have two dialogues open.
    1- the program itself.
    2- the user form I've created. I close the user form, and it still throws the error.

    With olMsg
    .BodyFormat = olFormatPlain
    .Body = strheader
    .Display
    End With

    I'm using office 365.
    Thank you.

    Reply
  6. Rainer says

    September 6, 2018 at 4:38 am

    Supercallifragilisticexpialidocious
    Well done. Thank's a lot!

    Reply
  7. Rajan says

    July 16, 2018 at 9:38 am

    Dear Diane,
    Thanks for your code . would you please me , i want to add some condition to code after extraction of few details. such as ; Reply To; From; To; and etc.
    please help me to add some condition on it.

    Thanks in advance.

    Reply
  8. Rajan says

    July 2, 2018 at 4:11 am

    Dear Diane,
    Thanks for your code . it was really helpful to me . in the email headers i was trying to remove particular line from every header.

    "h=sender:from:reply-to:to:subject:mime-version:content-type:list-unsubscribe:x-report-abuse:form-sub;"

    please help me to find solution on this .

    Reply
    • Diane Poremsky says

      July 3, 2018 at 11:22 pm

      you'll change the pattern to find it...
      .Pattern = "(h=(.*)-sub)"

      Do you actually need to remove it from the header or need to copy it out of the header? VBA can't edit the internet header - you may be able to use Redemption (outlookspy.com) to edit it but i don't have code samples. If the line nver changes, you can use the replace function to remove it.

      Reply
      • Rajan says

        July 11, 2018 at 5:38 am

        Dear Diane,
        Thanks for response,
        From the header i am extracting few details , such as;

        .Pattern = "(To:\s(.*))"

        but in result i am getting this , as both Contains To: ,
        can u help to get exact match of string what i am searching . as code is not understanding that i am looking only for "To" not
        "Reply-to."

        Reply-To: Jon Luchette
        To: Ernie Bourassa

  9. Rachana says

    January 19, 2018 at 6:34 am

    Hi Diane,

    I am working on a VB script that converts Outlook mail message to word doc and then save the file as a PDF. The PDF which is being generated is missing the header (which shows the sender's Display Name) .

    Could you suggest the way forward. I Have attached my code for reference.

    Reply
    • Diane Poremsky says

      January 20, 2018 at 9:17 am

      I haven't run your code yet, but the macro at https://www.slipstick.com/developer/code-samples/save-outlook-email-pdf/ created a pdf with the header you see in printouts (or replies) - with the sender in this format:
      From: OutlookForums
      I'll test your code when i get a chance (I'm on 'the road' right now.)

      Reply
  10. Joe says

    June 26, 2017 at 3:31 am

    Hi, can you show me a code where I can copy the email items (Outlook) in to a specific cell in a worksheet. Email Subject, From, received time, email address of the sender etc. Thanks in advance

    Reply
    • Diane Poremsky says

      July 2, 2017 at 3:45 pm

      The first macro at https://www.slipstick.com/developer/vba-copy-outlook-email-excel-workbook/ is used in a run a script rule, the second one is run manually.

      Reply
  11. klllmmm says

    June 25, 2017 at 8:50 am

    Dear Diane,
    I'm importing outlook data in a particular folder into MS access through Ms Access->External data->Under the import & link section "More"-> Import Outlook folder

    This imports a particular outlook folder data (fields noted below) at time, So i get tabuler dataset.

    Fields are;
    Importance, Icon, Priority, From, Message To Me, Message CC to Me, Sender Name
    ,CC, To, Message Size, Created, Modified, Subject Prefix,Has Attachments,
    Normalized Subject, Object Type, Content Unread, Contents,Received, Subject

    I' have below concerns.
    1. Mostly i'm getting for "To" & "CC" fields are contact names, not the exact email addresses.
    I prefer to get exact email address rather than contact name. Because sometimes
    same contact name has many email addresses. Is there a way get this done?

    2. Is their any way to import internet header informations of all the emails in a particular outlook folder
    into MS access?

    Thank you very much for your time & effort.

    Reply
    • Diane Poremsky says

      June 26, 2017 at 12:52 am

      You are limited to the included fields when you use the automated method but you can use VBA to get any field you need.

      Reply
      • klllmmm says

        June 26, 2017 at 3:13 am

        Thanks, i'll try to work with VBA scrpts to solve this.

  12. Harish says

    June 22, 2017 at 7:55 am

    This works fine when I run it on mails I have received.
    But, I wanted to parse mails that my friend has downloaded as .msg files from outlook on his PC.
    Is it possible for me to parse them on my PC?

    Reply
    • Diane Poremsky says

      June 22, 2017 at 9:08 am

      So they aren't in outlook? It should still work, assuming the header is present - sometimes saving files to the hard drive (or emailing them as attachments) removed the internet header.

      This line tells you to use the current selection: For Each olItem In Application.ActiveExplorer.Selection

      change it to use the opened message:
      Set olItem In Application.ActiveInspector.CurrentItem

      Reply
  13. Jeminar says

    February 8, 2017 at 6:33 am

    Thanks Diane, this is excellent.

    It doesn't capture the headers of sent mail (even if replying). Is there a way to get that?

    Reply
    • Diane Poremsky says

      May 10, 2017 at 12:51 am

      Sent mail doesn't have headers in Outlook - that is added by the SMTP server.

      Reply
  14. Marc says

    January 7, 2017 at 5:55 am

    Dear Diane. In the codes above there is a small typo (or a change in behavior between different Office versions): "//schemas.microsoft.com/mapi/proptag/0x007D001E is missing the http (at least this was necessary in Outlook 2016 to get it to work)

    Reply
  15. Seth says

    July 12, 2016 at 10:09 am

    I'm trying to access the headers of messages that have been forwarded, which works. But it only shows the header information of the person who forwarded the message and not the original sender (which I would like). Is there a way to access those original headers?

    Reply
    • Brad Kozell says

      October 18, 2016 at 12:21 am

      Unfortunately, this isn't possible. Once a message has been forwarded, the original header information is replaced with that of the "new" sender - the secondary person forwarding the message. This is by design. The only way to access the original header information is to work with the original (non-forwarded) message.

      Reply
  16. Brad Kozell says

    May 19, 2016 at 2:43 pm

    Thanks! This is definitely a step in the right direction for me. I'm new to VBA (very, very green!). However, instead of simply displaying the header of the current message, is there any way to modify the code to allow it to dump the headers of ALL messages of the current folder, or an Outlook folder of our choosing? I'm a computer tech, and have a need to export the header information of all emails in a folder (not just the Inbox). Any assistance would be greatly appreciated.

    Reply
    • Diane Poremsky says

      May 19, 2016 at 3:02 pm

      Tweaking the macro to do that isn't difficult - i have base code to get the items in a selected folder and you just need to put working bots of the macros together. What do you want to do with the headers once you get them - write to one email message (or file) or to separate messages?

      Reply
      • Brad Kozell says

        May 20, 2016 at 1:53 pm

        I was looking to dump all of the headers into a single text file (or e-mail, really doesn't matter) so I could put that information into an application that can look at IP addresses in the header & display the country of origin. This third party application allows you to paste information into it - which is why it doesn't matter if the information is written to an email or text file.

      • Diane Poremsky says

        May 24, 2016 at 1:24 am

        Try rearranging the lines - if there are a lot of messages it would be better to write each one separately rather than adding them to a string.
        Set olMsg = Application.CreateItem(olMailItem)
        For Each olItem In Application.ActiveExplorer.Selection
        strheader = GetInetHeaders(olItem) & vbcrlf & strheader
        Next
        With olMsg
        .BodyFormat = olFormatPlain
        .Body = strheader
        .Display
        End With

        the second sample at https://www.slipstick.com/developer/code-samples/save-email-message-text-file/ shows how to write a lot of messages to a text file; it could easily be adapted to get the header.

      • Brad Kozell says

        May 31, 2016 at 1:52 pm

        Thanks, I'll give it a try.

  17. mvcampos says

    March 30, 2016 at 2:16 pm

    first at all, thanks for posting this, really useful!!!

    Suggestion:

    If you, like me, are interested in the headers of the currently open email instead of selected email (sometimes we ask users to forward the email using Attach Item or CTRL+ALT+F, so we can check the headers), then

    Remove the "For Each" and "Next" line in "Sub ViewInternetHeader()" and add:

    Set olItem = Application.ActiveInspector.CurrentItem

    that way you can see the headers of mails that are attached in other mails.

    Reply
  18. CTrimmer says

    February 24, 2016 at 9:39 am

    Hello, is there a way, with vba, to insert the formatted "message header" (From, Sent, To, CC, Subject) that outlook automatically displays below the line " -----original message----- " when a message is forwarded or replied to?

    Reply
    • Diane Poremsky says

      March 31, 2016 at 1:21 am

      You need to build it using code or use the Forward or Reply command so they are added by default.

      Reply
  19. Rico says

    November 3, 2015 at 7:56 am

    I was trying with no luck to get the header opened in notepad instead of a new outlook message. Any luck ? or suggestion ? I manager to get a notepad open but not to copy the message in it. I'm not a macro expert :) just playing around

    Reply
    • Diane Poremsky says

      November 4, 2015 at 1:15 am

      It not opened, but you can write to a text file by replacing the new message code with this:
      Open "C:\Users\username\Documents\New folder\header.txt" For Output As 1
      Print #1, strheader
      Close #1
      Shell "notepad.exe c:\Users\username\Documents\New folder\header.txt", vbNormalFocus

      Reply
  20. Simon Lukes says

    June 1, 2015 at 6:40 pm

    Hi Diane,

    I am trying to clarify the workings of the GetInetHeaders function. Is it using an xml schema from a microsoft website to pull out the header information? I did pop over to the website referred to in the code but it doesn't appear to be searcheable and I couldn't (didn't know how to) search for that particular example of BlueDevilFan's code to see if it was explained.

    Reply
    • Diane Poremsky says

      July 30, 2015 at 12:58 am

      The code is fairly simple - it grabs the mapi property called PR_TRANSPORT_MESSAGE_HEADERS using propertyaccessor object. The schema is .
      MSDN has some information about the PropertyAccessor object https://msdn.microsoft.com/en-us/library/office/ff863046.aspx

      Reply
  21. Jane Smith says

    December 12, 2014 at 4:55 pm

    how do i use the information this is giving me? olMsg.body was not working

    Reply
    • Diane Poremsky says

      January 16, 2015 at 12:41 am

      What are you trying to do? How is it not working? This macro just grabs the internet header and puts it in a message body so it's easy to read.

      Reply
  22. kixtart says

    November 5, 2014 at 10:37 am

    I'm 100% ignorant of how to even start this process. Do I begin by opening Notepad, and pasting the above code into a new txt file? Then what? I'm a sysadmin and have only done batch file scripting up to this point, somehow. Please don't blast me for that. :-)

    Reply
    • Diane Poremsky says

      November 7, 2014 at 12:29 am

      See https://www.slipstick.com/developer/how-to-use-outlooks-vba-editor/ - that should get you pointed in the right direction.

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Visit Slipstick Forums.
What's New at Slipstick.com

Latest EMO: Vol. 31 Issue 3

Subscribe to Exchange Messaging Outlook






Support Services

Do you need help setting up Outlook, moving your email to a new computer, migrating or configuring Office 365, or just need some one-on-one assistance?

Our Sponsors

CompanionLink
ReliefJet
  • Popular
  • Latest
  • Week Month All
  • Jetpack plugin with Stats module needs to be enabled.
  • Error Opening iCloud Appointments in Classic Outlook
  • Opt out of Microsoft 365 Companion Apps
  • Mail Templates in Outlook for Windows (and Web)
  • Urban legend: Microsoft Deletes Old Outlook.com Messages
  • Buttons in the New Message Notifications
  • Move Deleted Items to Another Folder Automatically
  • Open Outlook Templates using PowerShell
  • Count and List Folders in Classic Outlook
  • Google Workspace and Outlook with POP Mail
  • Import EML Files into New Outlook
Ajax spinner

Recent Bugs List

Microsoft keeps a running list of issues affecting recently released updates at Fixes or workarounds for recent issues in classic Outlook (Windows).

For new Outlook for Windows: Fixes or workarounds for recent issues in new Outlook for Windows .

Outlook for Mac Recent issues: Fixes or workarounds for recent issues in Outlook for Mac

Outlook.com Recent issues: Fixes or workarounds for recent issues on Outlook.com

Office Update History

Update history for supported Office versions is at Update history for Office

Outlook Suggestions and Feedback

Outlook Feedback covers Outlook as an email client, including Outlook Android, iOS, Mac, and Windows clients, as well as the browser extension (PWA) and Outlook on the web.

Outlook (new) Feedback. Use this for feedback and suggestions for Outlook (new).

Use Outlook.com Feedback for suggestions or feedback about Outlook.com accounts.

Other Microsoft 365 applications and services




New Outlook Articles

Error Opening iCloud Appointments in Classic Outlook

Opt out of Microsoft 365 Companion Apps

Mail Templates in Outlook for Windows (and Web)

Urban legend: Microsoft Deletes Old Outlook.com Messages

Buttons in the New Message Notifications

Move Deleted Items to Another Folder Automatically

Open Outlook Templates using PowerShell

Count and List Folders in Classic Outlook

Google Workspace and Outlook with POP Mail

Import EML Files into New Outlook

Newest Code Samples

Open Outlook Templates using PowerShell

Count and List Folders in Classic Outlook

Insert Word Document into Email using VBA

Warn Before Deleting a Contact

Use PowerShell to Delete Attachments

Remove RE:, FWD:, and Other Prefixes from Subject Line

Change the Mailing Address Using PowerShell

Categorize @Mentioned Messages

Send an Email When You Open Outlook

Delete Old Calendar Events using VBA

VBA Basics

How to use the VBA Editor

Work with open item or selected item

Working with All Items in a Folder or Selected Items

VBA and non-default Outlook Folders

Backup and save your Outlook VBA macros

Get text using Left, Right, Mid, Len, InStr

Using Arrays in Outlook macros

Use RegEx to extract message text

Paste clipboard contents

Windows Folder Picker

Custom Forms

Designing Microsoft Outlook Forms

Set a custom form as default

Developer Resources

Developer Resources

Developer Tools

VBOffice.net samples

SlovakTech.com

Outlook MVP David Lee

Repair PST

Convert an OST to PST

Repair damaged PST file

Repair large PST File

Remove password from PST

Merge Two Data Files

Sync & Share Outlook Data

  • Share Calendar & Contacts
  • Synchronize two computers
  • Sync Calendar and Contacts Using Outlook.com
  • Sync Outlook & Android Devices
  • Sync Google Calendar with Outlook
  • Access Folders in Other Users Mailboxes

Diane Poremsky [Outlook MVP]

Make a donation

Mail Tools

Sending and Retrieval Tools

Mass Mail Tools

Compose Tools

Duplicate Remover Tools

Mail Tools for Outlook

Online Services

Calendar Tools

Schedule Management

Calendar Printing Tools

Calendar Reminder Tools

Calendar Dates & Data

Time and Billing Tools

Meeting Productivity Tools

Duplicate Remover Tools

Productivity

Productivity Tools

Automatic Message Processing Tools

Special Function Automatic Processing Tools

Housekeeping and Message Management

Task Tools

Project and Business Management Tools

Choosing the Folder to Save a Sent Message In

Run Rules on messages after reading

Help & Suggestions

Submit Outlook Feature Requests

Slipstick Support Services

Buy Microsoft 365 Office Software and Services

Visit Slipstick Forums.

What's New at Slipstick.com

Home | Outlook User | Exchange Administrator | Office 365 | Outlook.com | Outlook Developer
Outlook for Mac | Common Problems | Utilities & Addins | Tutorials
Outlook & iCloud Issues | Outlook Apps
EMO Archives | About Slipstick | Slipstick Forums
Submit New or Updated Outlook and Exchange Server Utilities

Send comments using our Feedback page
Copyright © 2026 Slipstick Systems. All rights reserved.
Slipstick Systems is not affiliated with Microsoft Corporation.