To resend a sent message, you need to open the message in the Sent Items folder then go to the Move group and choose the Actions, Resend this message... command.

You can save a few steps using a macro. You'll still need to select the message you want to resend, but the macro will do the other steps for you. You can change the subject, add new recipients, or change other fields.
This macro works in Outlook 2013 and above, on the open or selected sent item. The message will briefly display on screen before it's sent, or remove the olResendMsg.Send line to click Send yourself.
Sub ResendSentEmail()
'works in Outlook 2013/2016
Dim myItem As Outlook.MailItem
Dim objInsp As Outlook.Inspector
Dim objActionsMenu As Office.CommandBarControl
Dim olResendMsg As Outlook.MailItem
' get current item & open if needed
On Error Resume Next
Select Case TypeName(Application.ActiveWindow)
Case "Explorer"
Set myItem = Application.ActiveExplorer.Selection.Item(1)
myItem.Display
Case "Inspector"
Set myItem = Application.ActiveInspector.CurrentItem
Case Else
End Select
On Error GoTo 0
If myItem Is Nothing Then
MsgBox "Could not use current item. Please select or open a single email.", _
vbInformation
GoTo exitproc
End If
' run the resend command
Set objInsp = myItem.GetInspector
objInsp.CommandBars.ExecuteMso ("ResendThisMessage")
' get the opened compose message form & send it
' delete these lines if you don't need to auto-edit or to auto-send it
Set olResendMsg = Application.ActiveInspector.CurrentItem
' update fields if needed
olResendMsg.Subject = myItem.Subject & " (resend)"
olResendMsg.Send
' close orig email
myItem.Close olDiscard
exitproc:
Set myItem = Nothing
Set objInsp = Nothing
Set objActionsMenu = Nothing
Set olResendMsg = Nothing
End Sub
Resend Selected Messages
This macro runs on selected messages in the Sent Items folder and resends all. I merged this macro with the macro at Work with Selected items in any folder.
Sub ResendSelectedEmail()
'works in Outlook 2013/2016
Dim objOL As Outlook.Application
Dim currentExplorer As Explorer
Dim Selection As Selection
Dim myItem As Outlook.MailItem
Dim objInsp As Outlook.Inspector
Dim objActionsMenu As Office.CommandBarControl
Dim olResendMsg As Outlook.MailItem
' get current item & open if needed
On Error Resume Next
Set objOL = Outlook.Application
Set currentExplorer = objOL.ActiveExplorer
Set Selection = currentExplorer.Selection
For Each myItem In Selection
myItem.Display
' run the resend command
Set objInsp = myItem.GetInspector
objInsp.CommandBars.ExecuteMso ("ResendThisMessage")
' get the opened compose message form & send it
' delete these lines if you don't need to auto-edit or to auto-send it
Set olResendMsg = Application.ActiveInspector.CurrentItem
' update fields if needed
olResendMsg.Subject = myItem.Subject & " (resend) " & Date
olResendMsg.Send
' close orig email
myItem.Close olDiscard
Next
exitproc:
Set myItem = Nothing
Set objInsp = Nothing
Set objActionsMenu = Nothing
Set olResendMsg = Nothing
End Sub
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:
- Right click on Project1 and choose Insert > Module
- Copy and paste the macro into the new module.
More information as well as screenshots are at How to use the VBA Editor
Many thanks.
It is a great help for me.
I send daily few reports to the same recipients with same subject but with different text. So, your macro save many time for me.
Diane, thanks a lot for the macro. It really helped me write my macro.
One bit of question: I use olResendmsg.Close (olSave) but it is not saved in Drafts. Outlook sends the email immediately.
Is this specific to "ResendThisMessage" execution, or is there a point I need to consider?
Many thanks!
You want to save a copy as a draft? When you send, that removes the draft copy -
This saves a draft - because I'm not sending.
olResendMsg.Close (olSave)
'olResendMsg.Send
Does this still work in Microsoft Office 365?
Yes, it works in all current versions of outlook.
It looks like this will remove the re-sent e-mail from the ‘Sent’ folder? How do you prevent that?
It shouldn't remove the one already in the sent folder - buit will add the reset copy. The .close oldiscard line refers to save changes when you close a message.
Got it, thanks Diane! Is there a way so we can select multiple emails to resend at one click of the macro button? Currently I can only resend one at a time. If I select multiple emails and try resending, only one will go through.
The updated macro for multiple messages is at https://www.slipstick.com/developer/code-samples/macro-resend-message/#selected.
Hi Diane! Is there a way to select multiple emails to resend? It seems like we can only select one email to resend at a time. Thank you!
`As written, it is for one at a time, but could be tweaked to do multiples.
I have an odd problem in Outlook 2019: if I click resend this message on a message opened from an archive pst file and I edit the subject and body, the email will go out with only the subject edited, but the body remains unchanged. this only happens if the message came from an archive, if I pull from my main outlook file resend works fine and I can edit both the subject and body. The only workaround is to open the message, edit it, save it as a draft and then send it, otherwise the body changes will not be retained.
Is this an exchange account or IMAP? I've seen this behavior with both, but not for a long time and not in current versions.
If you edit the body first, does it make a difference?
No its POP3
No it doesnt make any difference if i edit body first.
Thank you.
no its a POP account. editing the body first doesnt make any difference. I got a new pc and installed outlook 2019 again and it didnt do it at first, now its doing it again on the new pc as well.
I found that the problem disappeared when I made sure that there was an email address entered in the "Reply Email" address box under the account settings for each email account that was setup. Not sure why having this address in the box would matter but in this case it did.
Heey Diane,
I would deeply appreciate if you can help me with it.
The idea is a macro that resend the first correo (on the same correo, not making a new one) making a reminder to the distinataries of that correo with a predefined message like "we remind you.."
I would like this to work for multiple emails with different characteristics but the reminder or message will eventually be forwarded.
You would help me a lot. Please.
Thanks.
Thank you! This works perfectly and is exactly what I was looking for.
Works fine for me, Thank you!
I removed "olResendMsg.Send" to check / edit the mail before sending it.
Is it normal that after the resend is done, it destroys the original message? How would you modify this to keep the original message in tact and just close it?
One more question - I'd like to do this macro on a series of messages saved within one folder in my sent items. What can I add to this to, once it's done with one message, to move down to the next item in the folder, and run it again until it's all done with every message in the folder?
TIA!
How it is destroying it? It shouldn't affect the original at all - all it does is run the command to resend. if you don't want it closed, remove this line - myItem.Close olDiscard - that will leave the open message on screen.
To run it on all messages, you need to put it together with this one - https://www.slipstick.com/developer/code-samples/working-items-folder-selected-items/ - you'll put this is the ' do whatever section (you'll also need the dim'sat the top).
Dim objInsp As Outlook.Inspector
Dim objActionsMenu As Office.CommandBarControl
Dim olResendMsg As Outlook.MailItem
obj.Display
Set objInsp = obj.GetInspector
objInsp.CommandBars.ExecuteMso ("ResendThisMessage")
Set olResendMsg = Application.ActiveInspector.CurrentItem
olResendMsg.Subject = obj.Subject & " (resend)"
olResendMsg.Send
obj.Close olDiscard
Hello,
You merged these to work with all items in a folder, what would need to be added to resend all selected items in a folder instead?