Always Reply Using HTML Format in Outlook

Last reviewed on December 30, 2013

Applies to Microsoft Outlook 2010, Outlook 2007, Outlook 2003 and older

Outlook Tip’s Tip 434: Change Reply Format answered a frequent question:

How do I set Outlook to always reply in HTML or RTF? When replying to, or forwarding, an email that is in plain text format, it always uses plain text. I want to force it to use RTF or HTML. I know I can change it every time, but I want it to be automatic.

The answer: Outlook does not offer a way to always use a specific format for all replies, be it RTF or HTML. You need to either change it on each message or write VBA macro to change the format. (You can force plain text replies to all messages by using the option to read all mail in plain text.)

We do not recommend always using HTML format (and certainly not RTF format) because you cannot be 100% sure that the sender is not using a smartphone or other device to read and reply to their mail. Many devices use plain text, either by default or as an option to the user and you should avoid changing the format on replies unless you have a valid reason – such as highlighting text, inserting tables or using bullet points. If you are replying with basic paragraphs of text, respect the sender's choice of plain text format.

Absolutely do not use RTF format for any message unless you know for a fact that the recipient will be reading it in Outlook (or OWA), otherwise they will get a plain text message and a winmail.dat attachment.

One of the readers of our Outlook Daily Tips mailing list posted the following macro. It was tested on Outlook 2007 and Outlook 2010 but should work on other versions.

Choose if you want to reply in HTML or plain text in this line:
'olFormat = olFormatPlain '(*1) – always use plain text
olFormat = olFormatHTML '(*2) – always use HTML

In the macro below, reply, forward, reply to all is generated using HTML.

If You want it to be in plain, comment out the HTML line and uncomment the plain text line, like this:
olFormat = olFormatPlain '(*1) – always use plain text
'olFormat = olFormatHTML '(*2) – always use HTML

And don't forget to disable macro warnings!

The Code

Copy and paste the code from this page into your ThisOutlookSession project.

In Outlook, press Alt+F11 to open the VBA editor and expand Microsoft Outlook Objects then double click on ThisOutlookSession to open it in the editing pane and Ctrl+P to paste the code.

Click the button to run the macroThis macro runs on application start up and monitors reply events. To test it without restarting, you can click within the Application_Startup macro and press the Run button in the Toolbar.

You’ll also need to set macro security to allow the macro to run. While the low setting is OK for testing, we recommend using SelfCert to sign the macro if you are using it long-term.

Option Explicit 

Private WithEvents oExpl As Explorer 
Private WithEvents oItem As MailItem 

Private bDiscardEvents As Boolean 
Private olFormat As OlBodyFormat 


Private Sub Application_Startup() 
    
   Set oExpl = Application.ActiveExplorer 
    
   bDiscardEvents = False 
    
   'olFormat = olFormatPlain        '(*1) - reply using plain text  
   olFormat = olFormatHTML        '(*2) - reply using HTML 
    
End Sub 

Private Sub oExpl_SelectionChange() 

   On Error Resume Next 
   Set oItem = oExpl.Selection.Item(1) 
    
End Sub 

Private Sub oItem_Reply(ByVal Response As Object, Cancel As Boolean) 

   If bDiscardEvents Or oItem.BodyFormat = olFormat Then 
       Exit Sub 
   End If 
    
   Cancel = True 

   bDiscardEvents = True 
    
   Dim oResponse As MailItem 
   Set oResponse = oItem.Reply 
   oResponse.BodyFormat = olFormat 
   oResponse.Display 
    
   bDiscardEvents = False 
    
End Sub 

Private Sub oItem_ReplyAll(ByVal Response As Object, Cancel As Boolean) 

   If bDiscardEvents Or oItem.BodyFormat = olFormat Then 
       Exit Sub 
   End If 

   Cancel = True 
  
   bDiscardEvents = True 
    
   Dim oResponse As MailItem 
   Set oResponse = oItem.ReplyAll 
   oResponse.BodyFormat = olFormat 
   oResponse.Display 
    
   bDiscardEvents = False 
    
End Sub 

Private Sub oItem_Forward(ByVal Forward As Object, Cancel As Boolean) 
    
   If bDiscardEvents Or oItem.BodyFormat = olFormat Then 
       Exit Sub 
   End If 
    
   Cancel = True 

   bDiscardEvents = True 
    
   Dim oResponse As MailItem 
   Set oResponse = oItem.Forward 
   oResponse.BodyFormat = olFormat 
   oResponse.Display 
    
   bDiscardEvents = False 
    
End Sub

Written by

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.

If the Post Coment button disappears, press your Tab key.