You never want to install Outlook on an Exchange box, it's a real good way
to mess up both.
Running on a server, Outlook code really isn't a good idea. First you have
to have Outlook installed there. Second, the Outlook code there has to run
in a different context than it would on a client, so you need to have
permissions and profiles set up for every mailbox you want to log into, or
you need the profile on the server to have permissions to log into all the
relevant mailboxes and use the NameSpace.GetSharedDefaultFolder() method
to access the alternate mailboxes.
If you use different profiles the code must log into Outlook, prompt for
profile to use, do its work, then exit Outlook and log into another
mailbox.
Using GetSharedDefaultFolder() allows you do one Outlook logon using the
existing Outlook profile there and then use the method to access default
folders in those other mailboxes.
Derick Swart said:
Thanks Ken. Sorry for the poor formulation.
I am working with Outlook 2007 items via an intranet application (Asp.NET
3.5). I have read Microsoft's cautionery notes.
On my own machine it works fine (snippet below), but when deployed to the
server it is obviously not going to work as is currently the case. I
would have to log onto Exchange, I suppose?
(Outlook is not installed on the Exchange box - our platform people tell
me this is not possible).
Thank you for your time.
Regards,
Derick
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Microsoft.Office.Interop.Outlook.Application app = null;
Microsoft.Office.Interop.Outlook._NameSpace ns = null;
Microsoft.Office.Interop.Outlook.MailItem item = null;
Microsoft.Office.Interop.Outlook.MAPIFolder inboxFolder = null;
Microsoft.Office.Interop.Outlook.MAPIFolder subFolder = null;
try
{
app = new Microsoft.Office.Interop.Outlook.Application();
ns = app.GetNamespace("MAPI");
ns.Logon(null, null, false, false);
inboxFolder =
ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
subFolder = inboxFolder.Folders["Persoonlik"];
//folder.Folders[1]; also works
Response.Write("Folder Name: " + subFolder.Name + " EntryId" +
subFolder.EntryID);
Response.Write("Num Items: " +
subFolder.Items.Count.ToString());
for (int i = 1; i <= 6; i++) //i <= subFolder.Items.Count
{
item =
(Microsoft.Office.Interop.Outlook.MailItem)subFolder.Items;
Response.Write("Item: " + i.ToString());
Response.Write("Subject: " + item.Subject);
Response.Write("Sent: " + item.SentOn.ToLongDateString() +
"," + item.SentOn.ToLongTimeString());
Response.Write("Categories: " + item.Categories);
Response.Write("Body: " + item.Body);
Response.Write("HTMLBody: " + item.HTMLBody);
}
}
catch (System.Runtime.InteropServices.COMException ex)
{
Response.Write(ex.ToString());
}
finally
{
ns = null;
app = null;
inboxFolder = null;
}
}
}