Hello all,

I hope someone has the answer to this question.  I have 
been using CDO 1.2.1 and Exchange Server 5.5 to 
programatically create Tasks in other users Outlook Task 
Folders.  I have attached a sample of the code that does 
this.  My problem is that we want to upgrade to Exchange 
Server 2000 and I have a feeling that the way I am 
currently doing this will no longer work. 

Here is a sample of the code I currently use:


Const olFolderOutbox As Integer = 4
Const olFolderSentMail As Integer = 5
Const olFolderTasks As Integer = 13

'item types
Const olAppointmentItem As Integer = 1
Const olContactItem As Integer = 2
Const olDistributionListItem As Integer = 7
Const olJournalItem As Integer = 4
Const olMailItem As Integer = 0
Const olNoteItem As Integer = 5
Const olPostItem As Integer = 6
Const olTaskItem As Integer = 3

'task status constants
Const olTaskComplete As Integer = 2
Const olTaskDeferred As Integer = 4
Const olTaskInProgress As Integer = 1
Const olTaskNotStarted As Integer = 0
Const olTaskWaiting As Integer = 3

Const adVarNumeric As Integer = 139
Const adCmdStoredProc As Integer = 4
Const adInteger As Integer = 3
Const adParamInput As Integer = 1
Const adVarChar As Integer = 200
Const adParamOutput As Integer = 2
Const adParamReturnValue As Integer = 4
Const adCmdText As Integer = 1
Const mInput As Integer = 1
Const mOutput As Integer = 0
Const mAppend As Integer = 2

'global objects
Dim MS As Object            ' the microsoft exchange object
Dim objOutlook As Object    ' the outlook object
Dim myNameSpace As Object   ' the Namespace object
Dim recipientObj As Object  ' the task recipient object
Dim f As New FileObj        ' file for debugging and error logging
Dim recipientId             ' the recipient id
Dim myTask As Object        ' a task object
Dim myItem As Object        ' an item object
Dim mapiFolder As Object
ExchangeServer As String

Private Sub Form_Load()

    Dim recid
    Dim action
    Dim taskSubject
    Dim taskbody
    Dim taskDueDate
    Dim profile

    ' set the profile name
    profile = "ggraham"

    'get the name of the exchange server
    ExchangeServer = GetSetting(appname:="OLTaskmaster", section:="Startup",
_
                       Key:="ESName", Default:="issadmin1")

    ' create the mapi session oject using the profile
    Set MS = CreateObject("MAPI.Session")
    MS.Logon , , False, True, Profileinfo:=ExchangeServer & vbLf &
CStr(profile)

    
    ' create the outlook application object
    Set objOutlook = CreateObject("Outlook.Application")

    'get the MAPI namespace and login as the user who gets the new task
    Set myNameSpace = objOutlook.GetNamespace("MAPI")
    myNameSpace.Logon MS.Name, , False, False

 
    'get the recipient id from the mapi object
    'and use it to get the recipient object
    'and set the default folder to that recipient's
    'task folder
    recipientId = MS.CurrentUser.Id
    Set recipientObj = myNameSpace.getRecipientFromId(recipientId)
    Set mapiFolder = myNameSpace.getSharedDefaultFolder(recipientObj,
olFolderTasks)


    'create the new task object
    Set myTask = mapiFolder.Items.Add()
    
    taskSubject = "Test task 1"
    taskbody = "This is a test task"
    taskDueDate = "03/29/2002"

  
    'fill in the task info
    With myTask
        .Body = taskBody
        .subject = taskSubject
        .duedate = dueDate
    End With

    
    'post the new task
    myTask.Save
    myTask.Close 1


    ' clear the objects
    Set myNameSpace = Nothing
    Set mapiFolder = Nothing
    Set recipientObj = Nothing
    Set myTask = Nothing
    Set myItem = Nothing

    objOutlook.Quit
    Set objOutlook = Nothing


end sub



I understand that the use of the Outlook Object model should continue to
work just fine.  However I use the following code to get the ID (MS.Name) of
the users profile from Exchange 5.5:

   ' create the mapi session oject using the profile
    Set MS = CreateObject("MAPI.Session")
    MS.Logon , , False, True, Profileinfo:=ExchangeServer & vbLf &
CStr(profile)


I then use this ID (MS.Name) to login to the Outlook Namespace. A get teh
default folder (Task) using MS.CurrentUser.Id.  This is what allows me to
manipulate other users Task list:

   ' create the outlook application object
    Set objOutlook = CreateObject("Outlook.Application")

    'get the MAPI namespace and login as the user who gets the new task
    Set myNameSpace = objOutlook.GetNamespace("MAPI")
    myNameSpace.Logon MS.Name, , False, False

 
    'get the recipient id from the mapi object
    'and use it to get the recipient object
    'and set the default folder to that recipient's
    'task folder
    recipientId = MS.CurrentUser.Id
    Set recipientObj = myNameSpace.getRecipientFromId(recipientId)
    Set mapiFolder = myNameSpace.getSharedDefaultFolder(recipientObj,
olFolderTasks)


My problem is that I have a feeling that I need to find another way under
Exchange 2000 since it is not MAPI based any more.

Does anyone have any Ideas???



Thanks,

Gary Graham


_________________________________________________________________
List posting FAQ:       http://www.swinc.com/resource/exch_faq.htm
Archives:               http://www.swynk.com/sitesearch/search.asp
To unsubscribe:         mailto:[EMAIL PROTECTED]
Exchange List admin:    [EMAIL PROTECTED]

Reply via email to