I've done this with the JournalsEventHandler, because there's no native place to store a reject reason and pas sit to the email notification. The dashboard I created has a text box bound to a literal value parameter. It also has a button that takes the text box value and updates the parameter using a Solution Helper in a Dashboard Extender rule.
If (args.FunctionName.XFEqualsIgnoreCase("Set_Reject_Reason")) Then
Dim setReason As String = args.NameValuePairs.XFGetValue("Reason")
BRApi.Dashboards.Parameters.SetLiteralParameterValue(si, False, "SU_PAram_LV_Reject_Reason", setReason)
End If
The extensibility rule then picks up this value using the following code:
Dim RejectReason As String = BRApi.Dashboards.Parameters.GetLiteralParameterValue( _
dbConnApp.SI, False, "SU_PAram_LV_Reject_Reason")