Publish form Issues

  • Thread starter Thread starter spareway
  • Start date Start date
S

spareway

Hi,

I am trying to publish a form via an outlook addin. When I call
Publish Form, I get an exception that says: one or more paramters are
incorrect.

any ideas?

thanks,

craig


Outlook.MailItem theItem;
Outlook.FormDescription theDesc;

//Environment.GetFolderPath(Environment.SpecialFolder.Personal)
Ol.MAPIFolder draftFolder =
OutlookApp.Session.GetDefaultFolder(Ol.OlDefaultFolders.olFolderDrafts);
theItem = (Outlook.MailItem)
this.OutlookApp.CreateItemFromTemplate(formPath, draftFolder);
theDesc = theItem.FormDescription;
theDesc.DisplayName = formName;

Ol.MAPIFolder inboxFolder =
OutlookApp.Session.GetDefaultFolder(Ol.OlDefaultFolders.olFolderInbox);
theDesc.PublishForm(Outlook.OlFormRegistry.olPersonalRegistry,inboxFolder
);
theItem.Close(Outlook.OlInspectorClose.olDiscard);
 
It looks more or less OK to me.

Does it help any if you cast everything as you retrieve it? Are all your
objects OK if you step the code in the debugger?
 
Hi Ken,

All my objects look ok, except for the inBoxFolder. I am not sure if
this is an issue but when i look at the UserPermissions property of the
inBoxFolder object it says:

<error: an exception of type:
{System.Runtime.InteropServices.COMException} occurred>.

could this be the problem?

Also the DisplayName is set to IPM.Note.XXX. Is this ok? What is
display name used for anyway?

thanks,

craig
 
A problem with the Inbox would definitely be a problem with your code.
However, I don't know what the UserPermissions property is in the Inbox
folder, it's not an exposed property in the Outlook object model.

DisplayName defaults to the custom MessageClass unless you enter a different
string for that property when the custom form is published. It's not an
important property for anything other than what shows up in the custom forms
manager.
 
I figured out a solution. The problem was with the second parameter of
publishform.

string
dllPath ;
object missing = System.Reflection.Missing.Value;
Ol.MailItem theItem;
Ol.FormDescription theDesc;

dllPath = GetAssemblyPath();
//Environment.GetFolderPath(Environment.SpecialFolder.Personal)
theItem = (Ol.MailItem)
this.OutlookApp.CreateItemFromTemplate(dllPath + formPath, missing);
theDesc = (Ol.FormDescription) theItem.FormDescription;
theDesc.DisplayName = formName;

theDesc.PublishForm(Ol.OlFormRegistry.olPersonalRegistry,missing );
theItem.Close(Ol.OlInspectorClose.olDiscard);

Marshal.ReleaseComObject(theItem);
Marshal.ReleaseComObject(theDesc);
 
Back
Top