Thank you @Eugene, your answer gave me hint to solve my problem
First I open new mail with code :
Application oApp = Globals.ThisAddIn.Application;
NameSpace oNs = oApp.GetNamespace("MAPI");
MAPIFolder oInbox = oNs.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
Items oItems = oInbox.Items;
MailItem oForm = oItems.Add("IPM.Note");
oForm.Display(false);
And then instead of "GetInspector" I used "ActiveInspector()" and set it with my class name
"oApp.ActiveInspector().SetCurrentFormPage("NameSpace.ClassName");"
The complete code on button click:
private void btnOpenMailForm_Click(object sender, RibbonControlEventArgs e)
{
Application oApp = Globals.ThisAddIn.Application;
NameSpace oNs = oApp.GetNamespace("MAPI");
MAPIFolder oInbox = oNs.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
Items oItems = oInbox.Items;
MailItem oForm = oItems.Add("IPM.Note");
oForm.Display(false);
oApp.ActiveInspector().SetCurrentFormPage("NameSpace.ClassName");
}
This opens my custom outlook form from the button click of ribbon button.