How to retrieve messages by using CDOEX and ADO in Visual C# (310206)
The information in this article applies to:
- Collaboration Data Objects for Exchange 2000
- Microsoft Visual C# .NET (2002)
- Microsoft Exchange 2000 Server SP1
- ActiveX Data Objects (ADO) 2.5
- Microsoft Visual C# 2005
This article was previously published under Q310206 SUMMARY This article describes how to use Microsoft Collaboration
Data Objects (CDO) for Exchange 2000 Library (CdoEx) in Microsoft Visual C# to retrieve messages from a user's Inbox. Create the sample to retrieve messages- Start Microsoft Visual Studio .NET or Microsoft Visual Studio 2005.
- On the File menu, point to New, and then click Project.
- Click Visual C# Projects under Project Types, and then click Console Application under Templates. By default, Class1.cs is created.
Note In Visual Studio 2005, click Visual C# under Project Types. In Visual Studio .NET, Class1.cs is created by default. In Visual Studio 2005, Program.cs is created by default. - Add a reference to the Microsoft CDO for Exchange 2000
Library and the Microsoft ActiveX Data Objects 2.5 Library. To do this, follow
these steps:
- On the Project menu, click Add Reference.
- Click the COM tab.
- Click Microsoft CDO for Exchange 2000
Library, and then click Select.
Note In Visual Studio 2005, you do not have to click Select. - Click Microsoft ActiveX Data Objects 2.5
Library, and then click Select.
Note In Visual Studio 2005, you do not have to click Select. - Click OK. If you are prompted to generate wrappers for the libraries that
you selected, click Yes.
- In the Code window, replace the default code with the
following code:
using System;
namespace Samples
{
class Class1
{
static void Main(string[] args)
{
try
{
ADODB.Connection oCn = new ADODB.Connection();
ADODB.Recordset oRs = new ADODB.Recordset();
ADODB.Fields oFields;
ADODB.Field oField;
// TODO:
string sFdUrl = "http://ExchServer/Exchange/UserAlias/Inbox";
oCn.Provider = "exoledb.datasource";
oCn.Open(sFdUrl, "", "", -1);
if(oCn.State == 1)
{
Console.WriteLine("Good Connection");
}
else
{
Console.WriteLine("Bad Connection");
}
string strSql;
strSql = "";
strSql = "select ";
strSql = strSql + " \"urn:schemas:mailheader:content-class\"";
strSql = strSql + ", \"DAV:href\" ";
strSql = strSql + ", \"urn:schemas:mailheader:content-class\" ";
strSql = strSql + ", \"DAV:displayname\"";
strSql = strSql + " from scope ('shallow traversal of " + "\"";
strSql = strSql + sFdUrl + "\"') ";
strSql = strSql + " WHERE \"DAV:ishidden\" = false";
strSql = strSql + " AND \"DAV:isfolder\" = false";
oRs.Open(strSql, oCn,
ADODB.CursorTypeEnum.adOpenUnspecified,
ADODB.LockTypeEnum.adLockOptimistic, 1);
// As an example, you only retrieve the first message.
// You can use a while loop through each message.
// Get the first message.
oRs.MoveFirst();
// Get Recordset fields.
oFields = oRs.Fields;
string sUrl;
oField = oFields["DAV:href"];
sUrl = oField.Value.ToString();
CDO.Message iMsg = new CDO.Message();
iMsg.DataSource.Open(sUrl, oRs.ActiveConnection,
ADODB.ConnectModeEnum.adModeReadWrite,
ADODB.RecordCreateOptionsEnum.adFailIfNotExists,
ADODB.RecordOpenOptionsEnum.adOpenSource,
"", "");
Console.WriteLine("{0}", iMsg.Sender);
Console.WriteLine("{0}", iMsg.Subject);
Console.WriteLine("{0}", iMsg.TextBody);
// Get message fields.
oFields = iMsg.Fields;
for(int i = 0; i < oFields.Count; i++)
{
oField = oFields[i];
Console.WriteLine("{0} : {1}", oField.Name, oField.Value);
}
oRs.Close();
oCn.Close();
oCn = null;
oRs = null;
oFields = null;
oField = null;
}
catch (Exception e)
{
Console.WriteLine("{0} Exception caught.", e);
}
}
}
} - Modify code for the TODO comments.
- Press F5 to build and to run the application.
REFERENCES For more information, visit the following Microsoft
Developer Network (MSDN) Web site:
Modification Type: | Minor | Last Reviewed: | 10/4/2006 |
---|
Keywords: | kbHOWTOmaster KB310206 kbAudDeveloper |
---|
|