Given the date on this post, not sure if you still need the answer to this. But, I thought I would provide it as I just ran into this and I found the solution to it. Before I post it, this approach it 100% unsupported as you will need to step out of the supported client reference documentation.
There is a web resource that gets added and removed from the form when you click the "+" on the timeline then email. It is "webresources/cc_MscrmControls.AppCommon.ContextualEmail.ContextualEmailControl/ContextualEmailControl.js". Add that to your main form. This way its statically have access. Now that it's on the form, you will call:
MscrmControls.AppCommon.ContextualEmail.PopupManager.createNewPopup();
This method take 1 parameter.
{
appId: GET THIS FROM THE QUERY STRING PARAMETER OF THE URL,
dataParams: {
parentrecordid: GUID OF THE RECORD YOU ARE OPENING THE RECORD FROM,
parentrecordname: NAME OF THE RECORD YOU ARE OPENING THE DIALOG FROM,
parentrecordtype: RECORD TYPE OF THE RECORD YOU ARE OPENING THE DIALOG FROM
},
emailFormId: IN THE JAVASCRIPT IS A LIST OF CONSTANTS THE GUID IS HARDED THERE
}
In the dataParams you can pass other fields like To, From will auto populate. I don't have the full code written, I just did a quick test in the the console debugging to see if I could get it to work while I was trying to figure out the code and I did get it to successful open the dialog and operate just as it would out of the box. Hopefully Microsoft gives us a supported way. If I do end up writing the JavaScript out for this, I will post it for anyone else that needs it.