Always Reply Using HTML Format in Outlook

Last reviewed on December 30, 2013   —  17 comments

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.

Please post long or more complicated questions at Outlookforums.

17 responses to “Always Reply Using HTML Format in Outlook”

  1. Paul

    Didnt work.

  2. Mike

    Did not work for me either, nothing happens

  3. Lucian

    Did not work for me too. Until I Looked at the code to debug and realized the program needs to be restarted.

    Restart Outlook to take affect.

    The only Problem I have know is changing the font as I don't like the one it is using but at least its better then Plain Text

  4. James

    Didn't work, even w/ restart.

  5. Chris

    okay so this works - it will reply permanently in html = great. A reply to an email originally in text will now be replied to in html ..

    BUT .. what about adding of a working html signature after the email reply has been set to html? .. how can this be done in your macro above?

  6. Adam Smith

    Here is my VBA code to do this: https://gist.github.com/3458680

    This code is superior to the other VBA code because the VBA code to change to HTML format used by the other code messes up the formatting of the draft, and this code doesn’t need to hook every item that you view in Outlook.

  7. ej

    I've been looking for this solution for a long time.. It's a real pain in the a**.

    1. I'm not techy and I don't know what to do with the code once i paste it.. anyone?
    2. Is there also a code to make it HTML when forwarding ?
    Thanks !

  8. Alonzo

    what is the code to always put your signature in.

  9. BOB

    WHEN TRYING TO "RUN" IT ASKS FOR MACRO NAME????

  10. Josiah Kuenzi

    Hi Diane,
    Some executive users I support showed me an issue in replying to messages that were delivered to them in plain text format. The end goal is for the recipients to easily see their response notes. After hitting reply, they immediately change the format from Plain Text to HTML so that their comments will be inserted prefaced by [Name in Brackets] and in another color automatically as they have it set to do in the Outlook Mail Options.

    The problem is this setting (Signatures and Stationery | Replying or forwarding messages | font color | mark my comments with: JMK) only works with messages originally sent in HTML. Even when switching immediately to HTML upon clicking reply, the color is NOT applied although [Name in Brackets] does get inserted and the bold and italics formatting is applied.
    We have tested this in Outlook 2007, 2010, and 2013 and it seems to be broken in all versions as the automatic coloring is not applied. They want it to be efficient, quick, and automatic so they don't have to spend time manually highlighting and formatting the color of all their responses.
    Thank you for your help!

Leave a Reply

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