Update: Alex remembered the add-in I ment: QuoteFix. Due to incompatibility issues with nowadays Outlook versions the guys published a VBA script doing mostly the same as the older add-in. Alex did some fine tuning on their script and applied parts of my snippet. Try his gist to get the best of both (mine and QuoteFix). Works like a charm for me.
When using Outlook to send/receive emails you usually press the reply (or reply all, forward) button to send back an answer. This works like a charm if the email you want to reply to was sent in plain text and you have the “line indention with prefix” option enabled in the Outlook settings.

Thus commenting the received email is pretty easy. Obviously there is no option to configure Outlook to reply to a HTML/RichText message with a plain text email too. So replying to such formatted mails with the “line indention with prefix” option enabled looks like this:

If you now try to write inline comments it is IMHO really hard for the recipient to find those in your reply. One might say: you can convert the reply message to plain text. Yes you can! But this won’t convert the silly blue line into ‘>’ prefixes. So I was looking for an add-in to solve this problem. I thought there was one I used in earlier Outlook versions, but couldn’t find it anymore. After boongleing for an hour I decided to implement this using VBA. This is the result:
Enum AnswerType
Forward = 0
Reply = 1
ReplyAll = 3
End Enum
Function DisplayPlainTextMessage(msg As MailItem, addPrefix As Boolean)
Dim prefix As String
If addPrefix = True Then prefix = "> "
msg.BodyFormat = olFormatPlain
Dim lines() As String
lines = Strings.Split(msg.body, vbCrLf)
Dim newBody As String
For i = 0 To UBound(lines)
If Trim(lines(i)) = "--" Then GoTo Break
newBody = newBody & prefix & Trim(lines(i)) & vbCrLf
Next
Break:
msg.body = newBody
msg.Display
End Function
Function SendAsPlainText(how As AnswerType)
On Error GoTo ErrorHandler
Dim msg As Outlook.MailItem
Set msg = GetMailItem
If msg Is Nothing Then
MsgBox ("No message selected.")
GoTo ProgramExit
End If
Select Case how
Case AnswerType.Forward
Call DisplayPlainTextMessage(msg.Forward, msg.BodyFormat <> olFormatPlain)
Case AnswerType.Reply
Call DisplayPlainTextMessage(msg.Reply, msg.BodyFormat <> olFormatPlain)
Case AnswerType.ReplyAll
Call DisplayPlainTextMessage(msg.ReplyAll, msg.BodyFormat <> olFormatPlain)
End Select
ProgramExit:
Exit Function
ErrorHandler:
MsgBox Err.Number & " - " & Err.Description
Resume ProgramExit
End Function
Sub ForwardAsPlainText()
Call SendAsPlainText(AnswerType.Forward)
End Sub
Sub ReplyAsPlainText()
Call SendAsPlainText(AnswerType.Reply)
End Sub
Sub ReplyAllAsPlainText()
Call SendAsPlainText(AnswerType.ReplyAll)
End Sub
Function GetMailItem() As Outlook.MailItem
On Error Resume Next
Select Case TypeName(Application.ActiveWindow)
Case "Explorer"
If TypeName(ActiveExplorer.Selection.Item(1)) = "MailItem" Then
Set GetMailItem = ActiveExplorer.Selection.Item(1)
End If
Case "Inspector"
If TypeName(ActiveInspector.CurrentItem) = "MailItem" Then
Set GetMailItem = ActiveInspector.CurrentItem
End If
End Select
On Error GoTo 0
End Function
You can now modify your ribbon bar to add new buttons to the three subs ReplyAsPlainText, ReplyAllAsPlainText, ForwardAsPlainText:
