#include-once #Include #Include ; #INDEX# ======================================================================================================================= ; Title .........: Outlook ; AutoIt Version: 3.3.0 ; Language: English ; Description ...: Functions that assist with MS Outlook ; =============================================================================================================================== ; #CURRENT# ===================================================================================================================== ;_OutlookOpen ;_OutlookSendMail ;_OutlookGetMail ;_OutlookSaveMail ;_OutlookDeleteMail ;_OutlookCopyMail - Not started ;_OutlookMoveMail - Not started ;_OutlookCreateNote ;_OutlookGetNotes ;_OutlookDeleteNote ;_OutlookModifyNote ;_OutlookCreateTask ;_OutlookGetTasks ;_OutlookDeleteTask ;_OutlookModifyTask ;_OutlookCreateAppointment ;_OutlookGetAppointments ;_OutlookModifyAppointment - Modify single appointment in a recurring appointment doesn't work. ;_OutlookDeleteAppointment ;_OutlookCreateContact ;_OutlookGetContacts ;_OutlookModifyContact - Not started ;_OutlookDeleteContact - Not started ;_OutlookCreateDistList ;_OutlookGetDistLists ;_OutlookDeleteDistList ;_OutlookDeleteDistListMember ;_OutlookModifyDistList - Not working ;_OutlookFolderExist ;_OutlookFolderAdd ;_OutlookFolderDelete ;_OutlookError ; =============================================================================================================================== const $olForward=2 const $olReply=0 const $olReplyAll=1 const $olReplyFolder=3 const $olRespond=4 const $olEmbedOriginalItem=1 const $olIncludeOriginalText=2 const $olIndentOriginalText=3 const $olLinkOriginalItem=4 const $olOmitOriginalText=0 const $olReplyTickOriginalText=1000 const $olUserPreference=5 const $olOpen=0 const $olPrompt=2 const $olSend=1 const $olDontShow=0 const $olMenu=1 const $olMenuAndToolbar=2 const $olByReference=4 const $olByValue=1 const $olEmbeddeditem=5 const $olOLE=6 const $olFormatHTML=2 const $olFormatPlain=1 const $olFormatRichText=3 const $olFormatUnspecified=0 const $olBusy=2 const $olFree=0 const $olOutOfOffice=3 const $olTentative=1 const $olLowBandwidth=200 const $olFriday=32 const $olMonday=2 const $olSaturday=64 const $olSunday=1 const $olThursday=16 const $olTuesday=4 const $olWednesday=8 const $olFolderCalendar=9 const $olFolderContacts=10 const $olFolderDeletedItems=3 const $olFolderDrafts=16 const $olFolderInbox=6 const $olFolderJournal=11 const $olFolderJunk=23 const $olFolderNotes=12 const $olFolderOutbox=4 const $olFolderSentMail=5 const $olFolderTasks=13 const $olPublicFoldersAllPublicFolders=18 const $olFolderConflicts=19 const $olFolderLocalFailures=21 const $olFolderServerFailures=22 const $olFolderSyncIssues=20 const $olAgent=3 const $olDistList=1 const $olForum=2 const $olOrganization=4 const $olPrivateDistList=5 const $olRemoteUser=6 const $olUser=0 const $olFullItem=1 const $olHeaderOnly=0 const $olEditorHTML=2 const $olEditorRTF=3 const $olEditorText=1 const $olEditorWord=4 const $olCachedConnectedDrizzle=600 const $olCachedConnectedFull=700 const $olCachedConnectedHeaders=500 const $olCachedDisconnected=400 const $olCachedOffline=200 const $olDisconnected=300 const $olNoExchange=0 const $olOffline=100 const $olOnline=800 const $olBlueFlagIcon=5 const $olGreenFlagIcon=3 const $olNoFlagIcon=0 const $olOrangeFlagIcon=2 const $olPurpleFlagIcon=1 const $olRedFlagIcon=6 const $olYellowFlagIcon=4 const $olFlagComplete=1 const $olFlagMarked=2 const $olNoFlag=0 const $olFolderDisplayFolderOnly=1 const $olFolderDisplayNoNavigation=2 const $olFolderDisplayNormal=0 const $olDefaultRegistry=0 const $olFolderRegistry=3 const $olOrganizationRegistry=4 const $olPersonalRegistry=2 const $olFemale=1 const $olMale=2 const $olUnspecified=0 const $olImportanceHigh=2 const $olImportanceLow=0 const $olImportanceNormal=1 const $olDiscard=1 const $olPromptForSave=2 const $olSave=0 const $olAppointmentItem=1 const $olContactItem=2 const $olDistributionListItem=7 const $olJournalItem=4 const $olMailItem=0 const $olNoteItem=5 const $olPostItem=6 const $olTaskItem=3 const $olAssociatedContact=1 const $olBusiness=2 const $olHome=1 const $olNone=0 const $olOther=3 const $olBCC=3 const $olCC=2 const $olOriginator=0 const $olTo=1 const $olOptional=2 const $olOrganizer=0 const $olRequired=1 const $olResource=3 const $olMeetingAccepted=3 const $olMeetingDeclined=4 const $olMeetingTentative=2 const $olMeeting=1 const $olMeetingCanceled=5 const $olMeetingReceived=3 const $olNonMeeting=0 const $olExchangeConferencing=2 const $olNetMeeting=0 const $olNetShow=1 const $olBlue=0 const $olGreen=1 const $olPink=2 const $olWhite=4 const $olYellow=3 const $olAction=32 const $olActions=33 const $olAddressEntries=21 const $olAddressEntry=8 const $olAddressList=7 const $olAddressLists=20 const $olApplication=0 const $olAppointment=26 const $olAttachment=5 const $olAttachments=18 const $olConflict=117 const $olConflicts=118 const $olContact=40 const $olDistributionList=69 const $olDocument=41 const $olException=30 const $olExceptions=29 const $olExplorer=34 const $olExplorers=60 const $olFolder=2 const $olFolders=15 const $olFormDescription=37 const $olInspector=35 const $olInspectors=61 const $olItemProperties=98 const $olItemProperty=99 const $olItems=16 const $olJournal=42 const $olLink=75 const $olLinks=76 const $olMail=43 const $olMeetingCancellation=54 const $olMeetingRequest=53 const $olMeetingResponseNegative=55 const $olMeetingResponsePositive=56 const $olMeetingResponseTentative=57 const $olNamespace=1 const $olNote=44 const $olOutlookBarGroup=66 const $olOutlookBarGroups=65 const $olOutlookBarPane=63 const $olOutlookBarShortcut=68 const $olOutlookBarShortcuts=67 const $olOutlookBarStorage=64 const $olPages=36 const $olPanes=62 const $olPost=45 const $olPropertyPages=71 const $olPropertyPageSite=70 const $olRecipient=4 const $olRecipients=17 const $olRecurrencePattern=28 const $olReminder=101 const $olReminders=100 const $olRemote=47 const $olReport=46 const $olResults=78 const $olSearch=77 const $olSelection=74 const $olSyncObject=72 const $olSyncObjects=73 const $olTask=48 const $olTaskRequest=49 const $olTaskRequestAccept=51 const $olTaskRequestDecline=52 const $olTaskRequestUpdate=50 const $olUserProperties=38 const $olUserProperty=39 const $olView=80 const $olViews=79 const $olExcelWorkSheetItem=8 const $olPowerPointShowItem=10 const $olWordDocumentItem=9 const $olLargeIcon=0 const $olSmallIcon=1 const $olFolderList=2 const $olNavigationPane=4 const $olOutlookBar=1 const $olPreview=3 const $olDoNotForward=1 const $olPermissionTemplate=2 const $olUnrestricted=0 const $olUnknown=0 const $olWindows=1 const $olPassport=2 const $olApptException=3 const $olApptMaster=1 const $olApptNotRecurring=0 const $olApptOccurrence=2 const $olRecursDaily=0 const $olRecursMonthly=2 const $olRecursMonthNth=3 const $olRecursWeekly=1 const $olRecursYearly=5 const $olRecursYearNth=6 const $olMarkedForCopy=3 const $olMarkedForDelete=4 const $olMarkedForDownload=2 const $olRemoteStatusNone=0 const $olUnMarked=1 const $olResponseAccepted=3 const $olResponseDeclined=4 const $olResponseNone=0 const $olResponseNotResponded=5 const $olResponseOrganized=1 const $olResponseTentative=2 const $olDoc=4 const $olHTML=5 const $olICal=8 const $olMSG=3 const $olMSGUnicode=9 const $olRTF=1 const $olTemplate=2 const $olTXT=0 const $olVCal=7 const $olVCard=6 const $olConfidential=3 const $olNormal=0 const $olPersonal=1 const $olPrivate=2 const $olNoItemCount=0 const $olShowTotalItemCount=2 const $olShowUnreadItemCount=1 const $olAscending=1 const $olDescending=2 const $olSortNone=0 const $olStoreANSI=3 const $olStoreDefault=1 const $olStoreUnicode=2 const $olSyncStarted=1 const $olSyncStopped=0 const $olTaskDelegationAccepted=2 const $olTaskDelegationDeclined=3 const $olTaskDelegationUnknown=1 const $olTaskNotDelegated=0 const $olDelegatedTask=1 const $olNewTask=0 const $olOwnTask=2 const $olFinalStatus=3 const $olUpdate=2 const $olTaskAccept=2 const $olTaskAssign=1 const $olTaskDecline=3 const $olTaskSimple=0 const $olTaskComplete=2 const $olTaskDeferred=4 const $olTaskInProgress=1 const $olTaskNotStarted=0 const $olTaskWaiting=3 const $olTrackingDelivered=1 const $olTrackingNone=0 const $olTrackingNotDelivered=2 const $olTrackingNotRead=3 const $olTrackingRead=6 const $olTrackingRecallFailure=4 const $olTrackingRecallSuccess=5 const $olTrackingReplied=7 const $olCombination=19 const $olCurrency=14 const $olDateTime=5 const $olDuration=7 const $olFormula=18 const $olKeywords=11 const $olNumber=3 const $olOutlookInternal=0 const $olPercent=12 const $olText=1 const $olYesNo=6 const $olViewSaveOptionAllFoldersOfType=2 const $olViewSaveOptionThisFolderEveryone=0 const $olViewSaveOptionThisFolderOnlyMe=1 const $olCalendarView=2 const $olCardView=1 const $olIconView=3 const $olTableView=0 const $olTimelineView=4 ;=============================================================================== ; ; Function Name: _OutlookOpen() ; Description: Open a connection to Microsoft Outlook. ; Syntax.........: _OutlookOpen() ; Parameter(s): None ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Returns new object identifier ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Unable to Create Outlook Object. ; Author(s): Wooltown ; Created: 2009-02-09 ; Modified: - ; ;=============================================================================== Func _OutlookOpen() Local $oOutlook = ObjCreate("Outlook.Application") If @error Or Not IsObj($oOutlook) Then Return SetError(1, 0, 0) EndIf Return $oOutlook EndFunc ;=============================================================================== ; ; Function Name: _OutlookSendMail() ; Description: Send an email using Microsoft Outlook. ; Syntax.........: _OutlookSendMail($oOutlook, $sTo = "", $sCc = "", $sBCc = "", $sSubject = "", $sBody = "", $sAttachments = "", $iBodyFormat = $olFormatUnspecified, $iImportance = $olImportanceNormal, $sWarningClick = "") ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen() ; $sTo - Optional: The recipiant(s), separated by ; ; $sCc - Optional: The CC recipiant(s) of the mail, separated by ; ; $sBCc - Optional: The BCC recipiant(s) of the mail, separated by ; ; $sSubject - Optional: The Subject of the mail ; $sBody - Optional: The Body of the mail ; $sAttachments - Optional: Attachments, separated by ; ; $iBodyFormat - Optional: The Bodyformat of the mail, default = $olFormatUnspecified ; $iImportance - Optional: The Importance of the mail, default = $olImportanceNormal ; $sWarningClick - Optional: The Entire SearchString to 'OutlookWarning1.exe', Default = None ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Returns 1 ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - No To, Cc or BCc specified. ; @ERROR = 2 - OutlookWarning1.exe not found. ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-02-09 ; Modified: 2009-02-24 - Several attachments didn't work ; ;=============================================================================== Func _OutlookSendMail($oOutlook, $sTo = "", $sCc = "", $sBcc = "", $sSubject = "", $sBody = "", $sAttachments = "", $iBodyFormat = $olFormatPlain, $iImportance = $olImportanceNormal, $sWarningClick = "") Local $iRc = 0, $asAttachments If $sTo = "" And $sCc = "" And $sBCc = "" Then Return SetError(1, 0, 0) EndIf If $sWarningClick <> "" And FileExists($sWarningClick) = 0 Then Return SetError(2, 0, 0) Else Run($sWarningClick) EndIf Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Local $oMessage = $oOutlook.CreateItem($olMailItem) With $oMessage .To = $sTo .Cc = $sCc .Bcc = $sBCc .Subject = $sSubject .Body = $sBody .BodyFormat = $iBodyFormat .Importance = $iImportance If $sAttachments <> "" Then $asAttachments = StringSplit($sAttachments,";") For $iNumOfAttachments = 1 to $asAttachments[0] .Attachments.Add($asAttachments[$iNumOfAttachments]) Next EndIf .Send $iRc = @ERROR EndWith If $iRc = 0 Then Return 1 Else Return SetError(9, 0, 0) EndIf EndFunc ;=============================================================================== ; ; Function Name: _OutlookGetMail() ; Description: Get all email using Microsoft Outlook. ; Syntax.........: _OutlookGetMail($oOutlook, $sFolder = $olFolderInbox, $fSubFolder = False, $sFrom = "", $sTo = "", $sCc = "", $sBCc = "", $sSubject = "", $iImportance = "", $fOnlyReturnUnread = False, $sWarningClick = "", $iSetStatus = 0, $fCountMailOnly = False) ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen() ; $sFolder - Optional: Folder, default = $olFolderInbox, add subfolders if wish to start search at a lower level, ex: $olFolderInbox & "\Archive" ; If you wish to access the root, use "\", Sent Items, write "\Sent Items" ; $fSubFolders - Optional: Search subfolders, default = False ; $sFrom - Optional: The e-mail address of the sender ; $sTo - Optional: The recipiant(s) ; $sCc - Optional: The CC recipiant(s) of the mail ; $sBCc - Optional: The BCC recipiant(s) of the mail ; $sSubject - Optional: The Subject of the mail ; $iImportance - Optional: The Importance of the mail ; $fOnlyReturnUnread - Optional: Default = False, set to True if you only wish the unread. ; $sWarningClick - Optional: The Entire SearchString to 'OutlookWarning2.exe', Default = None ; $iSetStatus - Optional: - 0 - Don't change status ; 1 - Set as Read ; 2 - Set as UnRead ; 3 - Change status Read > Unread, Unread > Read ; $fCountMailOnly - False - Report all ; True - Report only number of items ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Array in the following format: [10000][16] ; [0][0] - Total Number of items ; [0][1] - Number of unread items ; [1][0] - Sender name ; [1][1] - Sender Email address ; [1][2] - To ; [1][3] - Cc ; [1][4] - Bcc ; [1][5] - ReceivedTime ; [1][6] - SentOn ; [1][7] - Subject ; [1][8] - Folder ; [1][9] - Body ; [1][10] - BodyFormat ; [1][11] - Importance ; [1][12] - Unread ; [1][13] - Size ; [1][14] - FlagIcon ; [1][15] - Attachments ; [1][16] - Class - $olMail, $olMeetingRequest Or $olTaskRequest ; [n][n] - Item n ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Illegal parameters ; @ERROR = 2 - OutlookWarning2.exe not found. ; @ERROR = 3 - No Mail found/Folder not found. ; @ERROR = 4 - More than 9999 Mail, the first 9999 mail will be returned ; @ERROR = 5 - Mailfolder not found ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-02-25 ; Modified: 2009-03-02 ; 2009-03-10 - If folder not found, an error occured ; 2009-06-08 - Added $fCountMailOnly ; ;=============================================================================== Func _OutlookGetMail($oOutlook, $sFolder = $olFolderInbox, $fSubFolders = False, $sFrom = "", $sTo = "", $sCc = "", $sBCc = "", $sSubject = "", $iImportance = "", $fOnlyReturnUnread = False, $sWarningClick = "", $iSetStatus = 0, $fCountMailOnly = False) If $sWarningClick <> "" And FileExists($sWarningClick) = 0 Then Return SetError(2, 0, 0) Else Run($sWarningClick) EndIf Local $fRoot = False, $oFolder, $fOtherMailBox = False If StringLeft($sFolder,2) = "\\" Then $fOtherMailBox = True Local $asFolderID = StringSplit(StringMid($sFolder,3),"\\",1) _Arraydisplay($asFolderID) Else If StringLeft($sFolder,1) = "\" Then $fRoot = True $sFolder = StringMid($sFolder,2) EndIf EndIf If $iImportance < 0 Or $iImportance > 2 Then Return SetError(1, 0, 0) If $fCountMailOnly = True Then Local $asMail[1][2] Else Local $asMail[10000][17] EndIf Local $iRc = 0, $iFolderFound = 1 Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Local $oNamespace = $oOutlook.GetNamespace("MAPI") If StringRight($sFolder,1) = "\" Then $sFolder = StringLeft($sFolder,StringLen($sFolder) - 1) Local $sSubFolderParts = StringSplit ( $sFolder, "\"), $sFolderName If $fOtherMailBox = True Then Local $oSession = $oOutlook.Session $oFolder = $oSession.GetFolderFromID($asFolderID[1], $asFolderID[2]) msgbox(0,"obj",isobj($oFolder)) EndIf If $fRoot = True Then $sSubFolderParts[0] = 0 Local $oInbox = $oNamespace.GetDefaultFolder($olFolderInbox) If $sFolder = "" Then $oFolder = $oInbox.Parent Else $sFolderName = $oInbox.Parent ;$sFolderName = $sFolderName.Parent For $idx = 1 To $sFolderName.Folders.Count If $sFolderName.Folders.Item($idx).Name = $sFolder Then $oFolder = $sFolderName.Folders.Item($idx) Next EndIf Else If $fOtherMailBox = False Then $oFolder = $oNamespace.GetDefaultFolder($sSubFolderParts[1]) EndIf If IsObj($oFolder) = 0 Then Return SetError(5, 0, 0) Local $sRootFolderName = $oFolder.Name msgbox(0,"folder",$sRootFolderName) $asMail[0][0] = 0 $asMail[0][1] = 0 If $fOtherMailBox = False And $sSubFolderParts[0] > 1 Then $iFolderFound = _OutlookFindRootFolder($oFolder,$sRootFolderName,StringMid($sFolder,StringInStr($sFolder,"\")+ 1)) EndIf If $iFolderFound = 0 Then Return SetError(5, 0, 0) _OutlookFindMailInTree($asMail, $oFolder, $sRootFolderName, $fSubFolders, $sFrom, $sTo, $sCc, $sBCc, $sSubject, $iImportance, $fOnlyReturnUnread, $iSetStatus, $fCountMailOnly) $iRc = @ERROR If $iRc = 4 Then SetError (4) If $asMail[0][0] = 0 Then Return SetError(3, 0, 0) If $fCountMailOnly = False Then If $fOnlyReturnUnread = True Then Redim $asMail[$asMail[0][1] + 1][17] Else Redim $asMail[$asMail[0][0] + 1][17] EndIf _ArraySort($asMail,1,1,0,5) EndIf Return $asMail EndFunc ;=============================================================================== ; ; Function Name: _OutlookSaveMail() ; Description: Save an email from Microsoft Outlook, you must specify enough parameters so you will have a unique mail. ; Syntax.........: _OutlookSaveMail($oOutlook, $sFolder = $olFolderInbox, $sFrom = "", $sSubject = "", $sReceivedTime = "", $sSaveFormat = $olMSG, $sSaveDir = "", $sWarningClick = "", $iSetStatus = 0) ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen() ; $sFolder - Optional: Folder, default = $olFolderInbox, add subfolders if wish to start search at a lower level, ex: $olFolderInbox & "\Archive" ; $sFrom - Optional: The e-mail address of the sender ; $sSubject - Optional: The Subject of the mail ; $sReceivedTime - Optional: The Time the mail is received ; $sSaveFormat - Optional: Format to save the mail in, default = $olMSG, other values: $olTXT, $olHTML ; $sSaveDir - Optional: Directory to save the message and attachments, if not specified: attached files will not be saved. ; $sWarningClick - Optional: The Entire SearchString to 'OutlookWarning2.exe', Default = None ; $iSetStatus - Optional: - 0 - Don't change status ; 1 - Set as Read ; 2 - Set as UnRead ; 3 - Change status Read > Unread, Unread > Read ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Array containing ; [0] - Number of saved files, message and attachments ; [1] - Directory and Filename of the saved mail. ; [2] - Directory and Filename of the first saved file. ; [n] - Directory and Filename of the [n] saved file. ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Illegal parameters ; @ERROR = 2 - OutlookWarning2.exe not found. ; @ERROR = 3 - Mail not found/Folder not found. ; @ERROR = 4 - Directory specified doesn't exist ; @ERROR = 5 - More than one mail found ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-02-27 ; Modified: - ; ;=============================================================================== Func _OutlookSaveMail($oOutlook, $sFolder = $olFolderInbox, $sFrom = "", $sSubject = "", $sReceivedTime = "", $sSaveFormat = $olMSG, $sSaveDir = "", $sWarningClick = "", $iSetStatus = 0) If $sWarningClick <> "" And FileExists($sWarningClick) = 0 Then Return SetError(2, 0, 0) Else Run($sWarningClick) EndIf Local $fRoot = False, $oFolder If StringLeft($sFolder,1) = "\" Then $fRoot = True $sFolder = StringMid($sFolder,2) EndIf Local $sRootFolderName, $iRc = 0, $iAttachCnt, $oFilteredItems, $sFilter = "", $sFileName, $oTemp, $asResult[999], $sSuffix Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Local $oNamespace = $oOutlook.GetNamespace("MAPI") Local $sSubFolderParts = StringSplit ( $sFolder, "\") $oFolder = $oNamespace.GetDefaultFolder($sSubFolderParts[1]) If $fRoot = True Then $sSubFolderParts[0] = 0 Local $oInbox = $oNamespace.GetDefaultFolder($olFolderInbox) If $sFolder = "" Then $oFolder = $oInbox.Parent Else Local $sFolderName = $oInbox.Parent For $idx = 1 To $sFolderName.Folders.Count If $sFolderName.Folders.Item($idx).Name = $sFolder Then $oFolder = $sFolderName.Folders.Item($idx) Next EndIf Else $oFolder = $oNamespace.GetDefaultFolder($sSubFolderParts[1]) EndIf If $sFrom = "" And $sSubject = "" And $sReceivedTime = "" Then Return SetError(1, 0, 0) If Not ($sSaveFormat = $olMSG Or $sSaveFormat = $olTXT Or $sSaveFormat = $olHTML) Then Return SetError(1, 0, 0) Switch $sSaveFormat Case $olMSG $sSuffix = ".msg" Case $olTXT $sSuffix = ".txt" Case $olHTML $sSuffix = ".html" EndSwitch If FileExists($sSaveDir) = 0 Or StringInStr(FileGetAttrib ($sSaveDir),"D") = 0 Then Return SetError(4, 0, 0) If StringRight($sSaveDir,1) <> "\" Then $sSaveDir &= "\" $sRootFolderName = $oFolder.Name $asResult[0] = 0 If $sSubFolderParts[0] > 1 Then _OutlookFindRootFolder($oFolder,$sRootFolderName,StringMid($sFolder,StringInStr($sFolder,"\")+ 1)) EndIf Local $oMailItems = $oFolder.Items If $sFrom <> "" Then $sFilter = '[SenderName] = "' & $sFrom & '"' EndIf If $sSubject <> "" Then If $sFilter <> "" Then $sFilter &= ' And ' $sFilter &= '[Subject] = "' & $sSubject & '"' EndIf If $sReceivedTime <> "" Then If Not _DateIsValid($sReceivedTime) Then Return SetError(1, 0, 0) If $sFilter <> "" Then $sFilter &= ' And ' $sFilter &= '[ReceivedTime] = "' & $sReceivedTime & '"' EndIf $oFilteredItems = $oMailItems.Restrict($sFilter) If $oFilteredItems.Count = 0 Then Return SetError(3, 0, 0) If $oFilteredItems.Count > 1 Then Return SetError(5, 0, 0) For $oItem In $oFilteredItems $sSubject = StringRegExpReplace($oItem.Subject,'[\/:*?"<>|]', '_') $oItem.SaveAs ($sSaveDir & $sSubject & $sSuffix, $sSaveFormat ) $asResult[0] += 1 $asResult[$asResult[0]] = $sSaveDir & $sSubject & $sSuffix If $sSaveDir <> "" Then $iAttachCnt = $oItem.Attachments.Count If $iAttachCnt > 0 Then For $iAttachNum = 1 to $iAttachCnt $oTemp = $oItem.Attachments.Item($iAttachNum) $sFileName = $iAttachNum & "_" & $oTemp.FileName $oTemp = $oItem.Attachments.Item($iAttachNum) $asResult[0] += 1 $asResult[$asResult[0]] = $sSaveDir & $sFileName $oTemp.SaveAsFile ($sSaveDir & $sFileName ) Next EndIf EndIf Switch $iSetStatus Case 1 $oItem.UnRead = False Case 2 $oItem.UnRead = True Case 3 If $oItem.UnRead = False Then $oItem.UnRead = True Else $oItem.UnRead = False EndIf EndSwitch Next $iRc = @ERROR If $iRc = 0 Then Redim $asResult[$asResult[0] + 1] Return $asResult Else Return SetError(9, 0, 0) EndIf EndFunc ;=============================================================================== ; ; Function Name: _OutlookDeleteMail() ; Description: Delete one or more email from Microsoft Outlook, you must specify enough parameters so you will have a unique mail or set $fDeleteMultipleMail = True ; Syntax.........: _OutlookDeleteMail($oOutlook, $sFolder = $olFolderInbox, $sFrom = "", $sSubject = "", $sReceivedTime = "", $fDeleteMultipleMail = False, $fRemoveFromDeletedItems = False, $sWarningClick = "") ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen() ; $sFolder - Optional: Folder, default = $olFolderInbox, add subfolders if wish to start search at a lower level, ex: $olFolderInbox & "\Archive" ; $sFrom - Optional: The e-mail address of the sender ; $sSubject - Optional: The Subject of the mail ; $sReceivedTime - Optional: The Time the mail is received ; $fDeleteMultipleMail - Optional: Default: False, True - If you wish to delete multiple files ; $fRemoveFromDeletedItems- Optional: Default: False, True - If you wish to delete the files from Deleted Items as well ; $sWarningClick - Optional: The Entire SearchString to 'OutlookWarning2.exe', Default = None ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Array containing ; [0] - Number of deleted mails ; [1] - Deleted Mail 1 ; [2] - Deleted Mail 2 ; [n] - Deleted Mail n ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Illegal parameters ; @ERROR = 2 - OutlookWarning2.exe not found. ; @ERROR = 3 - Mail not found/Folder not found. ; @ERROR = 4 - More than one mail found, and $fDeleteMultipleMail = False ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-02-27 ; Modified: - ; ;=============================================================================== Func _OutlookDeleteMail($oOutlook, $sFolder = $olFolderInbox, $sFrom = "", $sSubject = "", $sReceivedTime = "", $fDeleteMultipleMail = False, $fRemoveFromDeletedItems = False, $sWarningClick = "") If $sWarningClick <> "" And FileExists($sWarningClick) = 0 Then Return SetError(2, 0, 0) Else Run($sWarningClick) EndIf Local $sRootFolderName, $iRc = 0, $oFilteredItems, $sFilter = "", $asResult[999], $aoDelete[999], $oDelete Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Local $oNamespace = $oOutlook.GetNamespace("MAPI") Local $sSubFolderParts = StringSplit ( $sFolder, "\") Local $oFolder = $oNamespace.GetDefaultFolder($sSubFolderParts[1]) If $sFrom = "" And $sSubject = "" And $sReceivedTime = "" Then Return SetError(1, 0, 0) $sRootFolderName = $oFolder.Name $asResult[0] = 0 If $sSubFolderParts[0] > 1 Then _OutlookFindRootFolder($oFolder,$sRootFolderName,StringMid($sFolder,StringInStr($sFolder,"\")+ 1)) EndIf Local $oMailItems = $oFolder.Items If $sFrom <> "" Then $sFilter = '[SenderName] = "' & $sFrom & '"' EndIf If $sSubject <> "" Then If $sFilter <> "" Then $sFilter &= ' And ' $sFilter &= '[Subject] = "' & $sSubject & '"' EndIf If $sReceivedTime <> "" Then If Not _DateIsValid($sReceivedTime) Then Return SetError(1, 0, 0) If $sFilter <> "" Then $sFilter &= ' And ' $sFilter &= '[ReceivedTime] = "' & $sReceivedTime & '"' EndIf $oFilteredItems = $oMailItems.Restrict($sFilter) If $oFilteredItems.Count = 0 Then Return SetError(3, 0, 0) If $oFilteredItems.Count > 1 And $fDeleteMultipleMail = False Then Return SetError(4, 0, 0) For $oItem In $oFilteredItems $asResult[0] += 1 $asResult[$asResult[0]] = $oItem.Subject & " - " & $oItem.SenderName & " - " & $oItem.ReceivedTime $aoDelete[$asResult[0]] = $oItem Next For $iDeleteNr = 1 To $asResult[0] $oDelete = $aoDelete[$iDeleteNr] $oDelete.Delete Next If $fRemoveFromDeletedItems = True Then _OutlookDeleteMail($oOutlook, $olFolderDeletedItems, $sFrom, $sSubject, $sReceivedTime, True, False, $sWarningClick) $iRc = @ERROR If $iRc = 0 or $iRc = 1 Then Redim $asResult[$asResult[0] + 1] Return $asResult Else Return SetError(9, 0, 0) EndIf EndFunc ;=============================================================================== ; ; Function Name: _OutlookCreateNote() ; Description: Create a note using Microsoft Outlook. ; Syntax.........: _OutlookCreateNote($oOutlook, $sSubject, $sBody = "", $sCategories = "", $iColor = "") ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen() ; $sSubject - The Subject of the Note ; $sBody - Optional: The Body of the Note ; $sCategories - Optional: Categories for the note, separated by ; ; $iColor - Optional: The color of the Note, 0 - Blue, 1 - Green, 2 - Pink, 3 - Yellow, 4 - White ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Returns 1 ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-02-09 ; Modified: - ; ;=============================================================================== Func _OutlookCreateNote($oOutlook, $sSubject, $sBody = "", $sCategories = "", $iColor = "") Local $iRc = 0 Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Local $oNote = $oOutlook.CreateItem($olNoteItem) With $oNote .Categories = $sCategories .Body = $sSubject & @CRLF & $sBody .Color = $iColor .Close ($olSave) $iRc = @ERROR EndWith If $iRc = 0 Then Return 1 Else Return SetError(9, 0, 0) EndIf EndFunc ;=============================================================================== ; ; Function Name: _OutlookGetNotes() ; Description: Get the Notes in Microsoft Outlook ; Syntax.........: _OutlookGetNotes($oOutlook) ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen(). ; $sWarningClick - Optional: The Entire SearchString to 'OutlookWarning2.exe', Default = None ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Array in the following format: [1000][6] ; [0][0] - Number of items ; [1][0] - Subject ; [1][1] - Body ; [1][2] - Color ; [1][3] - Categories ; [1][4] - Creation time ; [1][5] - Last modification time ; [n][n] - Item n ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Illegal parameters ; @ERROR = 2 - OutlookWarning2.exe not found. ; @ERROR = 3 - More than 999 Notes found, the first 999 notes will be returned. ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-03-02 ; Modified: - ; ;=============================================================================== Func _OutlookGetNotes($oOutlook,$sWarningClick = "") If $sWarningClick <> "" And FileExists($sWarningClick) = 0 Then Return SetError(2, 0, 0) Else Run($sWarningClick) EndIf Local $avNotes[1000][6] Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") $avNotes[0][0] = 0 Local $oNamespace = $oOutlook.GetNamespace("MAPI") Local $oFolder = $oNamespace.GetDefaultFolder($olFolderNotes) Local $oColItems = $oFolder.Items $oColItems.Sort("[Subject]") For $oItem In $oColItems If $avNotes[0][0] = 999 Then SetError (3) Return $avNotes EndIf $avNotes[0][0] += 1 $avNotes[$avNotes[0][0]][0] = $oItem.Subject $avNotes[$avNotes[0][0]][1] = $oItem.Body $avNotes[$avNotes[0][0]][2] = $oItem.Color $avNotes[$avNotes[0][0]][3] = $oItem.Categories $avNotes[$avNotes[0][0]][4] = $oItem.CreationTime $avNotes[$avNotes[0][0]][5] = $oItem.LastModificationTime Next $oItem = "" $oColItems = "" $oFolder = "" $oNamespace = "" If $avNotes[0][0] = 0 Then Return SetError(2, 0, 0) Redim $avNotes[$avNotes[0][0] + 1][6] Return $avNotes EndFunc ;=============================================================================== ; ; Function Name: _OutlookDeleteNote() ; Description: Get the Notes in Microsoft Outlook ; Syntax.........: _OutlookDeleteNote($oOutlook, $sSubject, $fDeleteMultipleNotes = False, $sWarningClick = "") ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen(). ; $sSubject - The Subject of the Note ; $fDeleteMultipleNotes - Default : False - If True, delete multiple files with same subject. ; $sWarningClick - Optional: The Entire SearchString to 'OutlookWarning2.exe', Default = None ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Array in the following format: [999] ; [0] - Number of deleted notes ; [1] - Deleted note 1 ; [2] - Deleted note 2 ; [n] - Deleted note n ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Illegal parameters ; @ERROR = 2 - OutlookWarning2.exe not found. ; @ERROR = 3 - More than 999 Notes found matching criteria. ; @ERROR = 4 - 0 notes found ; @ERROR = 5 - More than 1 Notes found and $fDeleteMultipleFiles = False ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-03-02 ; Modified: - ; ;=============================================================================== Func _OutlookDeleteNote($oOutlook, $sSubject, $fDeleteMultipleNotes = False, $sWarningClick = "") If $sWarningClick <> "" And FileExists($sWarningClick) = 0 Then Return SetError(2, 0, 0) Else Run($sWarningClick) EndIf Local $avNotes[1000], $oDelete, $aoDelete[1000] Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") $avNotes[0] = 0 Local $oNamespace = $oOutlook.GetNamespace("MAPI") Local $oFolder = $oNamespace.GetDefaultFolder($olFolderNotes) Local $oColItems = $oFolder.Items Local $oFilteredItems = $oColItems.Restrict('[Subject] = "' & $sSubject & '"') $oColItems.Sort("[Subject]") If $oFilteredItems.Count > 999 Then Return SetError(3, 0, 0) If $oFilteredItems.Count = 0 Then Return SetError(4, 0, 0) If $oFilteredItems.Count > 1 and $fDeleteMultipleNotes = False Then Return SetError(5, 0, 0) For $oItem In $oFilteredItems $avNotes[0] += 1 $avNotes[$avNotes[0]] = $oItem.Body $aoDelete[$avNotes[0]] = $oItem Next For $iDeleteNr = 1 To $avNotes[0] $oDelete = $aoDelete[$iDeleteNr] $oDelete.Delete Next $oItem = "" $oColItems = "" $oFolder = "" $oNamespace = "" If $avNotes[0] = 0 Then Return SetError(2, 0, 0) Redim $avNotes[$avNotes[0] + 1] Return $avNotes EndFunc ;=============================================================================== ; ; Function Name: _OutlookModifyNote() ; Description: Get the Notes in Microsoft Outlook ; Syntax.........: _OutlookModifyNote($oOutlook, $sSubject, $sBody = "", $sNewSubject = "", $sNewBody = "", $sCategories = "", $iColor = "", $sWarningClick = "") ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen(). ; $sSubject - The Subject of the Note ; $sBody - Optional: Necessary if more than one item has the same subject, search if string is found somewhere in body. ; $sNewSubject - Optional: The new Subject ; $sNewBody - Optional: The New Body ; $sNewCategories - Optional: Categories for the note, separated by ; ; $iNewColor - Optional: The color of the Note, 0 - Blue, 1 - Green, 2 - Pink, 3 - Yellow, 4 - White ; $sWarningClick - Optional: The Entire SearchString to 'OutlookWarning2.exe', Default = None ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Returns 1 ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Illegal parameters ; @ERROR = 2 - OutlookWarning2.exe not found. ; @ERROR = 3 - Note not found. ; @ERROR = 4 - More than 1 Note found. ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-03-02 ; Modified: - ; ;=============================================================================== Func _OutlookModifyNote($oOutlook, $sSubject, $sBody = "", $sNewSubject = "", $sNewBody = "", $sCategories = "", $iColor = "", $sWarningClick = "") If $sWarningClick <> "" And FileExists($sWarningClick) = 0 Then Return SetError(2, 0, 0) Else Run($sWarningClick) EndIf Local $iRc Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Local $oNamespace = $oOutlook.GetNamespace("MAPI") Local $oFolder = $oNamespace.GetDefaultFolder($olFolderNotes) Local $oColItems = $oFolder.Items Local $oFilteredItems = $oColItems.Restrict('[Subject] = "' & $sSubject & '"') $oColItems.Sort("[Subject]") If $oFilteredItems.Count = 0 Then Return SetError(3, 0, 0) If $oFilteredItems.Count > 1 and $sBody = "" Then Return SetError(4, 0, 0) If $oFilteredItems.Count >= 1 Then Local $iNumFound = 0 For $oItem In $oFilteredItems If StringInStr($oItem.Body,$sBody) > 0 Then $iNumFound += 1 Next If $iNumFound = 0 Then Return SetError(3, 0, 0) If $iNumFound > 1 Then Return SetError(4, 0, 0) EndIf For $oItem In $oFilteredItems $oItem.Body = $sNewSubject & @CRLF & $sNewBody If $sCategories <> "" Then $oItem.Categories = $sCategories If $iColor <> "" Then If $iColor < 0 And $iColor > 4 Then Return SetError(1, 0, 0) $oItem.Color = $iColor EndIf $oItem.Close ($olSave) $iRc = @ERROR Next $oItem = "" $oColItems = "" $oFolder = "" $oNamespace = "" If $iRc = 0 Then Return 1 Else Return SetError(9, 0, 0) EndIf Return 1 EndFunc ;=============================================================================== ; ; Function Name: _OutlookCreateTask() ; Description: Create a task using Microsoft Outlook. ; Syntax.........: _OutlookCreateTask($oOutlook, $sSubject, $sBody = "", $sStartDate = "", $sDueDate = "", $iImportance = "", $sReminderDate = "", $sCategories = "") ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen() ; $sSubject - The Subject of the Task ; $sBody - Optional: The Body of the Task ; $sStartDate - Optional: Start date of the task ; $sDueDate - Optional: End date the Task should be complete ; $iImportance - Optional: The Importance of the task, default = $olImportanceNormal ; $sReminderDate - Optional: When you should be reminded of the task, Date and time ; $sCategories - Optional: Categories for the note, separated by ; ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Returns 1 ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-02-09 ; Modified: - ; ;=============================================================================== Func _OutlookCreateTask($oOutlook, $sSubject, $sBody = "", $sStartDate = "", $sDueDate = "", $iImportance = "", $sReminderDate = "", $sCategories = "") Local $iRc = 0 Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Local $oNote = $oOutlook.CreateItem($olTaskItem) With $oNote .Subject = $sSubject .Body = $sBody .StartDate = $sStartDate .DueDate = $sDueDate .Importance = $iImportance .Categories = $sCategories If $sReminderDate <> "" Then .ReminderTime = $sReminderDate .ReminderSet = True EndIf .Close ($olSave) $iRc = @ERROR EndWith If $iRc = 0 Then Return 1 Else Return SetError(9, 0, 0) EndIf EndFunc ;=============================================================================== ; ; Function Name: _OutlookGetTasks() ; Description: Get the Tasks in Microsoft Outlook, specify Subject and/or Date Interval and/or Status to filter ; Syntax.........: _OutlookGetTasks($oOutlook, $sSubject = "", $sStartDate = "", $sEndDate = "", $sStatus = "", $sWarningClick = "") ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen(). ; $sSubject - Optional: The Subject of the Task. ; $sStartDate - Optional: Start date & time of the Task, format YYYY-MM-DD HH:MM - or what is set locally. ; $sEndDate - Optional: End date & time of the Task, format YYYY-MM-DD HH:MM - or what is set locally. ; $sStatus - Optional: The status of the Task: ; $olTaskNotStarted=0 ; $olTaskInProgress=1 ; $olTaskComplete=2 ; $olTaskWaiting=3 ; $olTaskDeferred=4 ; $sWarningClick - Optional: The Entire SearchString to 'OutlookWarning2.exe', Default = None ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Array in the following format: [1000][6] ; [0][0] - Number of items ; [0][1] - Number of items not started ; [1][0] - Subject ; [1][1] - StartDate ; [1][2] - EndDate ; [1][3] - sStatus ; [1][4] - Priority ; [1][5] - Complete ; [1][6] - PercentComplete ; [1][7] - ReminderSet ; [1][8] - ReminderMinutesBeforeStart ; [1][9] - Owner ; [1][10] - Body ; [1][11] - Date Completed ; [1][12] - Total Work in minutes ; [1][13] - Actual work in minutes ; [1][14] - Mileage ; [1][15] - Billing Information ; [1][16] - Companies ; [1][17] - Delegator ; [1][18] - Categories ; [n][n] - Item n ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Illegal parameters ; @ERROR = 2 - No tasks found ; @ERROR = 3 - More than 999 Tasks found, the first 999 tasks will be returned. ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-03-02 ; Modified: - ; ;=============================================================================== Func _OutlookGetTasks($oOutlook, $sSubject = "", $sStartDate = "", $sEndDate = "", $sStatus = "", $sWarningClick = "") If $sWarningClick <> "" And FileExists($sWarningClick) = 0 Then Return SetError(2, 0, 0) Else Run($sWarningClick) EndIf Local $avTasks[1000][19], $sFilter = "", $oFilteredItems Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") $avTasks[0][0] = 0 $avTasks[0][1] = 0 Local $oNamespace = $oOutlook.GetNamespace("MAPI") Local $oFolder = $oNamespace.GetDefaultFolder($olFolderTasks) Local $oColItems = $oFolder.Items $oColItems.Sort("[Start]") $oColItems.IncludeRecurrences = True If $sSubject <> "" Then $sFilter = '[Subject] = "' & $sSubject & '"' EndIf If $sStartDate <> "" Then If Not _DateIsValid($sStartDate) Then Return SetError(1, 0, 0) If $sFilter <> "" Then $sFilter &= ' And ' $sFilter &= '[Start] >= "' & $sStartDate & '"' EndIf If $sEndDate <> "" Then If Not _DateIsValid($sEndDate) Then Return SetError(1, 0, 0) If $sFilter <> "" Then $sFilter &= ' And ' $sFilter &= '[Due] <= "' & $sEndDate & '"' EndIf If $sStatus <> "" Then If $sFilter <> "" Then $sFilter &= ' And ' $sFilter &= '[Status] = "' & $sStatus & '"' EndIf If $sFilter = "" Then $oFilteredItems = $oColItems Else $oFilteredItems = $oColItems.Restrict($sFilter) EndIf For $oItem In $oFilteredItems If $avTasks[0][0] = 999 Then SetError (3) Return $avTasks EndIf $avTasks[0][0] += 1 $avTasks[$avTasks[0][0]][0] = $oItem.Subject $avTasks[$avTasks[0][0]][1] = $oItem.StartDate $avTasks[$avTasks[0][0]][2] = $oItem.DueDate $avTasks[$avTasks[0][0]][3] = $oItem.Status $avTasks[$avTasks[0][0]][4] = $oItem.Importance $avTasks[$avTasks[0][0]][5] = $oItem.Complete $avTasks[$avTasks[0][0]][6] = $oItem.PercentComplete If $avTasks[$avTasks[0][0]][6] = 0 Then $avTasks[0][1] += 1 $avTasks[$avTasks[0][0]][7] = $oItem.ReminderSet $avTasks[$avTasks[0][0]][8] = $oItem.ReminderTime $avTasks[$avTasks[0][0]][9] = $oItem.Owner $avTasks[$avTasks[0][0]][10] = $oItem.Body $avTasks[$avTasks[0][0]][11] = $oItem.DateCompleted $avTasks[$avTasks[0][0]][12] = $oItem.TotalWork $avTasks[$avTasks[0][0]][13] = $oItem.ActualWork $avTasks[$avTasks[0][0]][14] = $oItem.Mileage $avTasks[$avTasks[0][0]][15] = $oItem.BillingInformation $avTasks[$avTasks[0][0]][16] = $oItem.Companies $avTasks[$avTasks[0][0]][17] = $oItem.Delegator $avTasks[$avTasks[0][0]][18] = $oItem.Categories Next $oItem = "" $oColItems = "" $oFolder = "" $oNamespace = "" If $avTasks[0][0] = 0 Then Return SetError(2, 0, 0) Redim $avTasks[$avTasks[0][0] + 1][19] Return $avTasks EndFunc ;=============================================================================== ; ; Function Name: _OutlookDeleteTask() ; Description: Delete a Task in Microsoft Outlook, specify Subject and eventually Start Date. ; Syntax.........: _OutlookDeleteTask($oOutlook, $sSubject, $sStartDate = "", $fDeleteMultipleTasks = False, $sWarningClick = "") ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen(). ; $sSubject - The Subject of the Task. ; $sStartDate - Optional: Start date & time of the Task, format YYYY-MM-DD HH:MM - or what is set locally. ; $fDeleteMultipleTasks - Optional: Default: False, set to True to delete multiple occurences ; $sWarningClick - Optional: The Entire SearchString to 'OutlookWarning2.exe', Default = None ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Array in the following format: [1000] ; [0] - Number of items deleted ; [1] - Deleted item 1 ; [2] - Deleted item 2 ; [n] - Deleted item n ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Illegal parameters ; @ERROR = 2 - OutlookWarning2.exe not found. ; @ERROR = 3 - More than 999 Notes found matching criteria. ; @ERROR = 4 - 0 notes found ; @ERROR = 5 - More than 1 Notes found and $fDeleteMultipleFiles = False ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-03-04 ; Modified: - ; ;=============================================================================== Func _OutlookDeleteTask($oOutlook, $sSubject, $sStartDate = "", $fDeleteMultipleTasks = False, $sWarningClick = "") If $sWarningClick <> "" And FileExists($sWarningClick) = 0 Then Return SetError(2, 0, 0) Else Run($sWarningClick) EndIf Local $avTasks[1000], $aoDelete[1000], $sFilter = "", $oFilteredItems Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") $avTasks[0] = 0 Local $oNamespace = $oOutlook.GetNamespace("MAPI") Local $oFolder = $oNamespace.GetDefaultFolder($olFolderTasks) Local $oColItems = $oFolder.Items $oColItems.IncludeRecurrences = True $sFilter = '[Subject] = "' & $sSubject & '"' If $sStartDate <> "" Then If Not _DateIsValid($sStartDate) Then Return SetError(1, 0, 0) If $sFilter <> "" Then $sFilter &= ' And ' $sFilter &= '[StartDate] = "' & $sStartDate & '"' EndIf $oFilteredItems = $oColItems.Restrict($sFilter) If $oFilteredItems.Count > 999 Then Return SetError(3, 0, 0) If $oFilteredItems.Count = 0 Then Return SetError(4, 0, 0) If $oFilteredItems.Count > 1 And $fDeleteMultipleTasks = False Then Return SetError(5, 0, 0) For $oItem In $oFilteredItems $avTasks[0] += 1 $avTasks[$avTasks[0]] = $oItem.Subject & " - " & $oItem.StartDate $aoDelete[$avTasks[0]] = $oItem Next For $iDeleteNr = 1 To $avTasks[0] $oDelete = $aoDelete[$iDeleteNr] $oDelete.Delete Next $oItem = "" $oColItems = "" $oFolder = "" $oNamespace = "" If $avTasks[0] = 0 Then Return SetError(2, 0, 0) Redim $avTasks[$avTasks[0] + 1] Return $avTasks EndFunc ;=============================================================================== ; ; Function Name: _OutlookModifyTask() ; Description: Modify a Task in Microsoft Outlook, specify Subject and/or Start Date. ; Syntax.........: _OutlookModifyTask($oOutlook, $sSubject, $sStartDate = "", $sNewSubject = "", $sNewStartDate = "", $sDueDate = "", $iStatus = "", $iImportance = "", $fComplete = "", $iPercentComplete = "", $fReminderSet = "", $sReminderTime = "", $sOwner = "", $sBody = "", $sDateCompleted = "", $iTotalWork = "", $iActualWork = "", $sMileage = "", $sBillingInformation = "", $sCompanies = "", $sDelegator = "", $sCategories = "", $sWarningClick = "") ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen(). ; $sSubject - The Subject of the Task. ; $sStartDate - Optional: Start date & time of the Task, format YYYY-MM-DD HH:MM - or what is set locally. ; $sNewSubject - Optional: New Subject ; $sNewStartDate - Optional: New Start Date, format YYYY-MM-DD HH:MM - or what is set locally. ; $sDueDate - Optional: Due Date, format YYYY-MM-DD HH:MM - or what is set locally. ; $iStatus - Optional: $olTaskNotStarted=0 ; $olTaskInProgress=1 ; $olTaskComplete=2 ; $olTaskWaiting=3 ; $olTaskDeferred=4 ; $iImportance - Optional: $olImportanceLow=0 ; $olImportanceNormal=1 ; $olImportanceHigh=2 ; $fComplete - Optional: True or False, sets DateCompleted to actual Date and Time and PercentComplete = 100 ; $iPercentComplete - Optional: Percent complete, sets DateCompleted to actual Date and Time, Sets complete to True ; $fReminderSet - Optional: True or False ; $sReminderTime - Optional: Reminder Date, format YYYY-MM-DD HH:MM - or what is set locally. ; $sOwner - Optional: Owner ; $sBody - Optional: Body ; $sDateCompleted - Optional: Completed Date, format YYYY-MM-DD HH:MM - or what is set locally, also sets Complete = True and PercentComplete = 100 ; $iTotalWork - Optional: Total Work in minutes ; $iActualWork - Optional: Actual Work in minutes ; $sMileage - Optional: Mileage ; $sBillingInformation - Optional: Billing Information ; $sCompanies - Optional: Companies ; $sDelegator - Optional: Delegator ; $sCategories - Optional: Categories ; $sWarningClick - Optional: The Entire SearchString to 'OutlookWarning2.exe', Default = None ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Array in the following format: [1000] ; [0] - Number of items deleted ; [1] - Deleted item 1 ; [2] - Deleted item 2 ; [n] - Deleted item n ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Illegal parameters ; @ERROR = 2 - OutlookWarning2.exe not found. ; @ERROR = 4 - 0 notes found ; @ERROR = 5 - More than 1 Notes found ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-03-06 ; Modified: - ; ;=============================================================================== Func _OutlookModifyTask($oOutlook, $sSubject, $sStartDate = "", $sNewSubject = "", $sNewStartDate = "", $sDueDate = "", $iStatus = "", $iImportance = "", $fComplete = "", $iPercentComplete = "", $fReminderSet = "", $sReminderTime = "", $sOwner = "", $sBody = "", $sDateCompleted = "", $iTotalWork = "", $iActualWork = "", $sMileage = "", $sBillingInformation = "", $sCompanies = "", $sDelegator = "", $sCategories = "", $sWarningClick = "") If $sWarningClick <> "" And FileExists($sWarningClick) = 0 Then Return SetError(2, 0, 0) Else Run($sWarningClick) EndIf If $sSubject = "" And $sStartDate = "" Then Return SetError(1, 0, 0) Local $iRc = 0, $sFilter = "", $oFilteredItems Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Local $oNamespace = $oOutlook.GetNamespace("MAPI") Local $oFolder = $oNamespace.GetDefaultFolder($olFolderTasks) Local $oColItems = $oFolder.Items $oColItems.IncludeRecurrences = True $sFilter = '[Subject] = "' & $sSubject & '"' If $sStartDate <> "" Then If Not _DateIsValid($sStartDate) Then Return SetError(1, 0, 0) If $sFilter <> "" Then $sFilter &= ' And ' $sFilter &= '[StartDate] = "' & $sStartDate & '"' EndIf $oFilteredItems = $oColItems.Restrict($sFilter) If $oFilteredItems.Count = 0 Then Return SetError(4, 0, 0) If $oFilteredItems.Count > 1 Then Return SetError(5, 0, 0) For $oItem In $oFilteredItems If $sNewSubject <> "" Then $oItem.Subject = $sNewSubject EndIf If $sNewStartDate <> "" Then If Not _DateIsValid($sNewStartDate) Then Return SetError(1, 0, 0) $oItem.StartDate = $sNewStartDate EndIf If $sDueDate <> "" Then $oItem.DueDate = $sDueDate EndIf If $iStatus <> "" Then $oItem.Status = $iStatus EndIf If $iImportance <> "" Then $oItem.Importance = $iImportance EndIf If $fComplete <> "" Then $oItem.Complete = $fComplete EndIf If $iPercentComplete <> "" Then $oItem.PercentComplete = $iPercentComplete EndIf If $fReminderSet <> "" Then $oItem.ReminderSet = $fReminderSet EndIf If $sReminderTime <> "" Then $oItem.ReminderTime = $sReminderTime EndIf If $sOwner <> "" Then $oItem.Owner = $sOwner EndIf If $sBody <> "" Then $oItem.Body = $sBody EndIf If $sDateCompleted <> "" Then If Not _DateIsValid($sDateCompleted) Then Return SetError(1, 0, 0) $oItem.DateCompleted = $sDateCompleted EndIf If $iTotalWork <> "" Then $oItem.TotalWork = $iTotalWork EndIf If $iActualWork <> "" Then $oItem.ActualWork = $iActualWork EndIf If $sMileage <> "" Then $oItem.Mileage = $sMileage EndIf If $sBillingInformation <> "" Then $oItem.BillingInformation = $sBillingInformation EndIf If $sCompanies <> "" Then $oItem.Companies = $sCompanies EndIf If $sDelegator <> "" Then $oItem.Delegator = $sDelegator EndIf If $sCategories <> "" Then $oItem.Categories = $sCategories EndIf $oItem.Close ($olSave) $iRc = @ERROR Next $oItem = "" $oColItems = "" $oFolder = "" $oNamespace = "" If $iRc = 0 Then Return 1 Else Return SetError(9, 0, 0) EndIf EndFunc ;=============================================================================== ; ; Function Name: _OutlookCreateAppointment() ; Description: Create an appointment using Microsoft Outlook. ; Syntax.........: _OutlookCreateAppointment($oOutlook, $sSubject, $sStartDate, $sEndDate = "", $sLocation = "", $fAllDayEvent = False, $sBody = "", $sReminder = 15, $sShowTimeAs = "", $iImportance = "", $iSensitivity = "", $iRecurrenceType = "", $sPatternStartDate = "", $sPatternEndDate = "", $iInterval = "", $iDayOfWeekMask = "", $iDay_MonthOfMonth_Year = "", $iInstance = "") ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen(). ; $sSubject - The Subject of the Appointment. ; $sStartDate - Start date & time of the Appointment, format YYYY-MM-DD HH:MM - or what is set locally. ; $sEndDate - Optional: End date & time of the Appointment, format YYYY-MM-DD HH:MM - or what is set locally. ; Number of minutes. If not set 30 minutes is used. ; $sLocation - Optional: The location where the meeting is going to take place. ; $fAllDayEvent - Optional: True or False(default), if set to True and the appointment is lasting for more than one day, end Date ; must be one day higher than the actual end Date. ; $sBody - Optional: The Body of the Appointment. ; $sReminder - Optional: Reminder in Minutes before start, 0 for no reminder ; $sShowTimeAs - Optional: $olBusy=2 (default), $olFree=0, $olOutOfOffice=3, $olTentative=1 ; $iImportance - Optional: $olImportanceNormal=1 (default), $olImportanceHigh=2, $olImportanceLow=0 ; $iSensitivity - Optional: $olNormal=0, $olPersonal=1, $olPrivate=2, $olConfidential=3 ; $iRecurrenceType - Optional: $olRecursDaily=0, $olRecursWeekly=1, $olRecursMonthly=2, $olRecursMonthNth=3, $olRecursYearly=5, $olRecursYearNth=6 ; $sPatternStartDate - Optional: Start Date of the Reccurent Appointment, format YYYY-MM-DD - or what is set locally. ; $sPatternEndDate - Optional: End Date of the Reccurent Appointment, format YYYY-MM-DD - or what is set locally. ; $iInterval - Optional: Interval between the Reccurent Appointment ; $iDayOfWeekMask - Optional: Add the values of the days the appointment shall occur. $olSunday=1, $olMonday=2, $olTuesday=4, $olWednesday=8, $olThursday=16, $olFriday=32, $olSaturday=64 ; $iDay_MonthOfMonth_Year - Optional: DayOfMonth or MonthOfYear, Day of the month or month of the year on which the recurring appointment or task occurs ; $iInstance - Optional: This property is only valid for recurrences of the $olRecursMonthNth and $olRecursYearNth type and allows the definition of a recurrence pattern that is only valid for the Nth occurrence, such as "the 2nd Sunday in March" pattern. The count is set numerically: 1 for the first, 2 for the second, and so on through 5 for the last. Values greater than 5 will generate errors when the pattern is saved. ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Returns 1 ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Illegal parameters ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-02-11 ; Modified: - ; ;=============================================================================== Func _OutlookCreateAppointment($oOutlook, $sSubject, $sStartDate = "", $sEndDate = "", $sLocation = "", $fAllDayEvent = False, $sBody = "", $sReminder = 0, $sShowTimeAs = "", $iImportance = "", $iSensitivity = "", $iRecurrenceType = "", $sPatternStartDate = "", $sPatternEndDate = "", $iInterval = "", $iDayOfWeekMask = "", $iDay_MonthOfMonth_Year = "", $iInstance = "") Local $iRc = 0 If $fAllDayEvent = "" Then Return SetError(1, 0, 0) Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Local $oNote = $oOutlook.CreateItem($olAppointmentItem) With $oNote .Subject = $sSubject .Location = $sLocation .AllDayEvent = $fAllDayEvent If Not _DateIsValid($sStartDate) Then Return SetError(1, 0, 0) .Start = $sStartDate If _DateIsValid($sEndDate) Then .End = $sEndDate Else .Duration = Number($sEndDate) EndIf .Body = $sBody If $sReminder <> 0 Then .ReminderSet = True .ReminderMinutesBeforeStart = $sReminder Else .ReminderSet = False EndIf .Importance = $iImportance .BusyStatus = $sShowTimeAs If $iSensitivity <> "" Then .Sensitivity = $iSensitivity If $iRecurrenceType <> "" Then Local $oRecurrent = .GetRecurrencePattern $oRecurrent.RecurrenceType = $iRecurrenceType If $sPatternStartDate <> "" And $sPatternEndDate <> "" Then If $iDayOfWeekMask <> "" Then $oRecurrent.DayOfWeekMask = $iDayOfWeekMask If Not _DateIsValid($sPatternStartDate) Then Return SetError(1, 0, 0) If Not _DateIsValid($sPatternEndDate) Then Return SetError(1, 0, 0) $oRecurrent.PatternStartDate = $sPatternStartDate If $iInterval <> "" Then $oRecurrent.Interval = $iInterval $oRecurrent.PatternEndDate = $sPatternEndDate EndIf If $iRecurrenceType = $olRecursMonthNth Or $iRecurrenceType = $olRecursYearNth Then If $iRecurrenceType = $olRecursMonthNth Then $oRecurrent.DayOfMonth = $iDay_MonthOfMonth_Year $oRecurrent.Instance = $iInstance Else $oRecurrent.MonthOfYear = $iDay_MonthOfMonth_Year $oRecurrent.Instance = $iInstance EndIf EndIf EndIf .Save .Close ($olSave) $iRc = @ERROR EndWith If $iRc = 0 Then Return 1 Else Return SetError(9, 0, 0) EndIf EndFunc ;=============================================================================== ; ; Function Name: _OutlookModifyAppointment() ; Description: Modify an appointment using Microsoft Outlook. ; Syntax.........: _OutlookModifyAppointment($oOutlook, $sSubject, $sStartDate, $sNewSubject = "", $sNewStartDate = "", $sEndDate = "", $sLocation = "", $fAllDayEvent = False, $sBody = "", $sReminder = 15, $sShowTimeAs = "", $iImportance = "", $iSensitivity = "", $iRecurrenceType = "", $sPatternStartDate = "", $sPatternEndDate = "", $iInterval = "", $iDayOfWeekMask = "", $iDay_MonthOfMonth_Year = "", $iInstance = "") ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen(). ; $sSubject - The Subject of the Appointment. ; $sStartDate - Start date & time of the Appointment, format YYYY-MM-DD HH:MM - or what is set locally. ; $sNewSubject - Optional: New Subject of the Appointment. ; $sNewStartDate - Optional: New start date & time of the Appointment, format YYYY-MM-DD HH:MM - or what is set locally. ; $sEndDate - Optional: End date & time of the Appointment, format YYYY-MM-DD HH:MM - or what is set locally. ; Number of minutes. ; $sLocation - Optional: The location where the meeting is going to take place. ; $fAllDayEvent - Optional: True or False if set to True and the appointment is lasting for more than one day, end Date ; must be one day higher than the actual end Date. ; $sBody - Optional: The Body of the Appointment. ; $sReminder - Optional: Reminder in Minutes before start, 0 for no reminder ; $sShowTimeAs - Optional: $olBusy=2, $olFree=0, $olOutOfOffice=3, $olTentative=1 ; $iImportance - Optional: $olImportanceNormal=1, $olImportanceHigh=2, $olImportanceLow=0 ; $iSensitivity - Optional: $olNormal=0, $olPersonal=1, $olPrivate=2, $olConfidential=3 ; $iRecurrenceType - Optional: $olRecursDaily=0, $olRecursWeekly=1, $olRecursMonthly=2, $olRecursMonthNth=3, $olRecursYearly=5, $olRecursYearNth=6. Remove Recurrence=-1 ; $sPatternStartDate - Optional: Start Date of the Reccurent Appointment, format YYYY-MM-DD - or what is set locally. ; $sPatternEndDate - Optional: End Date of the Reccurent Appointment, format YYYY-MM-DD - or what is set locally. ; $iInterval - Optional: Interval between the Reccurent Appointment ; $iDayOfWeekMask - Optional: Add the values of the days the appointment shall occur. $olSunday=1, $olMonday=2, $olTuesday=4, $olWednesday=8, $olThursday=16, $olFriday=32, $olSaturday=64 ; $iDay_MonthOfMonth_Year - Optional: DayOfMonth or MonthOfYear, Day of the month or month of the year on which the recurring appointment or task occurs ; $iInstance - Optional: This property is only valid for recurrences of the $olRecursMonthNth and $olRecursYearNth type and allows the definition of a recurrence pattern that is only valid for the Nth occurrence, such as "the 2nd Sunday in March" pattern. The count is set numerically: 1 for the first, 2 for the second, and so on through 5 for the last. Values greater than 5 will generate errors when the pattern is saved. ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Returns 1 ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Illegal parameters ; @ERROR = 2 - Appointment not found ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-02-23 ; Modified: - ; ;=============================================================================== Func _OutlookModifyAppointment($oOutlook, $sSubject, $sStartDate = "", $sNewSubject = "", $sNewStartDate = "", $sEndDate = "", $sLocation = "", $fAllDayEvent = "", $sBody = "", $sReminder = "", $sShowTimeAs = "", $iImportance = "", $iSensitivity = "", $iRecurrenceType = "", $sPatternStartDate = "", $sPatternEndDate = "", $iInterval = "", $iDayOfWeekMask = "", $iDay_MonthOfMonth_Year = "", $iInstance = "") Local $iRc = 0, $fItemFound = False, $fIsRecurring, $oRecPatt, $oOrig Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Local $oNamespace = $oOutlook.GetNamespace("MAPI") Local $oFolder = $oNamespace.GetDefaultFolder($olFolderCalendar) Local $oColItems = $oFolder.Items $oColItems.Sort("[Start]") $oColItems.IncludeRecurrences = True Local $sFilter = '[Subject] = "' & $sSubject & '"' Local $oFilteredItems = $oColItems.Restrict($sFilter) For $oItem In $oFilteredItems $fItemFound = True $fIsRecurring = $oItem.IsRecurring If $fIsRecurring = False Then ; ----- Non Recurring Appointment ;With $oItem If $oItem.Start > StringLeft($sStartDate,4) & StringMid($sStartDate,6,2) & StringMid($sStartDate,9,2) & StringMid($sStartDate,12,2) & StringMid($sStartDate,15,2) & "00" Then Return SetError(2, 0, 0) If $oItem.Start = StringLeft($sStartDate,4) & StringMid($sStartDate,6,2) & StringMid($sStartDate,9,2) & StringMid($sStartDate,12,2) & StringMid($sStartDate,15,2) & "00" Then If $sNewSubject <> "" Then $oItem.Subject = $sNewSubject If $sLocation <> "" Then $oItem.Location = $sLocation If $fAllDayEvent <> "" Then $oItem.AllDayEvent = $fAllDayEvent If $sNewStartDate <> "" Then If Not _DateIsValid($sNewStartDate) Then Return SetError(1, 0, 0) $oItem.Start = $sNewStartDate EndIf If $sEndDate <> "" Then If _DateIsValid($sEndDate) Then $oItem.End = $sEndDate Else $oItem.Duration = Number($sEndDate) EndIf EndIf If $sBody <> "" Then $oItem.Body = $sBody If $sReminder <> "" Then If $sReminder <> 0 Then $oItem.ReminderSet = True $oItem.ReminderMinutesBeforeStart = Number($sReminder) Else $oItem.ReminderSet = False EndIf EndIf If $iImportance <> "" Then $oItem.Importance = $iImportance If $sShowTimeAs <> "" Then $oItem.BusyStatus = $sShowTimeAs If $iSensitivity <> "" Then $oItem.Sensitivity = $iSensitivity If $iRecurrenceType <> "" Then Local $oRecurrent = $oItem.GetRecurrencePattern $oRecurrent.RecurrenceType = $iRecurrenceType If $sPatternStartDate <> "" And $sPatternEndDate <> "" Then If $iDayOfWeekMask <> "" Then $oRecurrent.DayOfWeekMask = $iDayOfWeekMask If Not _DateIsValid($sPatternStartDate) Then Return SetError(1, 0, 0) $oRecurrent.PatternStartDate = $sPatternStartDate If Not _DateIsValid($sPatternEndDate) Then If Not IsNumber(Number($sPatternEndDate)) Then Return SetError(1, 0, 0) Else $oRecurrent.Occurrences = Number($sPatternEndDate) EndIf Else $oRecurrent.PatternEndDate = $sPatternEndDate EndIf If $iInterval <> "" Then $oRecurrent.Interval = $iInterval EndIf If $iRecurrenceType = $olRecursMonthNth Or $iRecurrenceType = $olRecursYearNth Then If $iRecurrenceType = $olRecursMonthNth Then $oRecurrent.DayOfMonth = $iDay_MonthOfMonth_Year $oRecurrent.Instance = $iInstance Else $oRecurrent.MonthOfYear = $iDay_MonthOfMonth_Year $oRecurrent.Instance = $iInstance EndIf EndIf EndIf $oItem.Save $oItem.Close $iRc = @ERROR If $iRc = 0 Or $iRc = -2147352561 Then Return 1 Else Return SetError(9, 0, 0) EndIf EndIf ;EndWith Else ; ----- Recurring Appointment, change all occurences $oItem.GetFirst $oRecPatt = $oItem.GetRecurrencePattern ;With $oRecPatt If $sNewStartDate <> "" Then If Not _DateIsValid($sNewStartDate) Then Return SetError(1, 0, 0) $oRecPatt.StartTime = $sNewStartDate EndIf If $sEndDate <> "" Then If _DateIsValid($sEndDate) Then $oRecPatt.EndTime = $sEndDate Else $oRecPatt.Duration = Number($sEndDate) EndIf EndIf $oRecPatt.Save $oRecPatt.Close ;Endwith $oOrig = $oRecPatt.Parent With $oOrig If $sLocation <> "" Then $oOrig.Location = $sLocation If $fAllDayEvent <> "" Then $oOrig.AllDayEvent = $fAllDayEvent If $sBody <> "" Then $oOrig.Body = $sBody If $sReminder <> "" Then If $sReminder <> 0 Then $oOrig.ReminderSet = True $oOrig.ReminderMinutesBeforeStart = Number($sReminder) Else $oOrig.ReminderSet = False EndIf EndIf If $iImportance <> "" Then $oOrig.Importance = $iImportance If $sShowTimeAs <> "" Then $oOrig.BusyStatus = $sShowTimeAs If $iSensitivity <> "" Then $oOrig.Sensitivity = $iSensitivity If $iRecurrenceType <> "" Then $oRecurrent = $oOrig.GetRecurrencePattern $oRecurrent.RecurrenceType = $iRecurrenceType If $sPatternStartDate <> "" And $sPatternEndDate <> "" Then If $iDayOfWeekMask <> "" Then $oRecurrent.DayOfWeekMask = $iDayOfWeekMask If Not _DateIsValid($sPatternStartDate) Then Return SetError(1, 0, 0) $oRecurrent.PatternStartDate = $sPatternStartDate If Not _DateIsValid($sPatternEndDate) Then If Not IsNumber(Number($sPatternEndDate)) Then Return SetError(1, 0, 0) Else $oRecurrent.Occurrences = Number($sPatternEndDate) EndIf Else $oRecurrent.PatternEndDate = $sPatternEndDate EndIf If $iInterval <> "" Then $oRecurrent.Interval = $iInterval EndIf If $iRecurrenceType = $olRecursMonthNth Or $iRecurrenceType = $olRecursYearNth Then If $iRecurrenceType = $olRecursMonthNth Then $oRecurrent.DayOfMonth = $iDay_MonthOfMonth_Year $oRecurrent.Instance = $iInstance Else $oRecurrent.MonthOfYear = $iDay_MonthOfMonth_Year $oRecurrent.Instance = $iInstance EndIf EndIf EndIf $oOrig.Subject = $sNewSubject $oOrig.Save $oOrig.Close $iRc = @ERROR If $iRc = 0 Or $iRc = -2147352561 Then Return 1 Else Return SetError(9, 0, 0) EndIf ;Endwith EndIf Next If $fItemFound = False Then Return SetError(2, 0, 0) EndFunc ;=============================================================================== ; ; Function Name: _OutlookGetAppointments() ; Description: Get the appointments in Microsoft Outlook specify Subject and or Date Interval ; Syntax.........: _OutlookGetAppointments($oOutlook, $sSubject = "", $sStartDate = "", $sEndDate = "", $sLocation = "", $iAllDayEvent = 2, $iImportance = "") ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen(). ; $sSubject - The Subject of the Appointment. ; $sStartDate - Start date & time of the Appointment, format YYYY-MM-DD HH:MM - or what is set locally. ; $sEndDate - Optional: End date & time of the Appointment, format YYYY-MM-DD HH:MM - or what is set locally. ; $sLocation - Optional: The location where the meeting is going to take place. ; $iAllDayEvent - Optional: 0 - Part of Day, 1 - All Day, 2 - Both (default) ; $iImportance - Optional: $olImportanceNormal=1, $olImportanceHigh=2, $olImportanceLow=0 ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Array in the following format: [1000][8] ; [0][0] - Number of items ; [1][0] - Subject ; [1][1] - StartDate ; [1][2] - EndDate ; [1][3] - Location ; [1][4] - AllDayEvent ; [1][5] - Importance ; [1][6] - Body ; [1][7] - Categories ; [n][n] - Item n ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Illegal parameters ; @ERROR = 2 - No appointments found ; @ERROR = 3 - More than 999 Appointments found, the first 999 appointments will be returned ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-02-24 ; Modified: - ; ;=============================================================================== Func _OutlookGetAppointments($oOutlook, $sSubject = "", $sStartDate = "", $sEndDate = "", $sLocation = "", $iAllDayEvent = 2, $iImportance = "") Local $avAppointments[1000][8], $sFilter = "", $fAllDayEvent, $oFilteredItems Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Switch $iAllDayEvent Case 0 $fAllDayEvent = False Case 1 $fAllDayEvent = True EndSwitch $avAppointments[0][0] = 0 Local $oNamespace = $oOutlook.GetNamespace("MAPI") Local $oFolder = $oNamespace.GetDefaultFolder($olFolderCalendar) Local $oColItems = $oFolder.Items $oColItems.Sort("[Start]") $oColItems.IncludeRecurrences = True If $sSubject <> "" Then $sFilter = '[Subject] = "' & $sSubject & '"' EndIf If $sStartDate <> "" Then If Not _DateIsValid($sStartDate) Then Return SetError(1, 0, 0) If $sFilter <> "" Then $sFilter &= ' And ' $sFilter &= '[Start] >= "' & $sStartDate & '"' EndIf If $sEndDate <> "" Then If Not _DateIsValid($sEndDate) Then Return SetError(1, 0, 0) If $sFilter <> "" Then $sFilter &= ' And ' $sFilter &= '[End] <= "' & $sEndDate & '"' EndIf If $sLocation <> "" Then If $sFilter <> "" Then $sFilter &= ' And ' $sFilter &= '[Location] = "' & $sLocation & '"' EndIf If $iImportance <> "" Then If $sFilter <> "" Then $sFilter &= ' And ' $sFilter &= '[Importance] = "' & $iImportance & '"' EndIf $oFilteredItems = $oColItems.Restrict($sFilter) If $sFilter = "" Then Return SetError(1, 0, 0) For $oItem In $oFilteredItems $oItem.IsRecurring If $avAppointments[0][0] = 999 Then SetError (3) Return $avAppointments EndIf If $iAllDayEvent <> 2 Then If $fAllDayEvent = True Then If $oItem.AllDayEvent = False Then ContinueLoop Else If $oItem.AllDayEvent = True Then ContinueLoop EndIf EndIf $avAppointments[0][0] += 1 $avAppointments[$avAppointments[0][0]][0] = $oItem.Subject $avAppointments[$avAppointments[0][0]][1] = $oItem.Start $avAppointments[$avAppointments[0][0]][2] = $oItem.End $avAppointments[$avAppointments[0][0]][3] = $oItem.Location $avAppointments[$avAppointments[0][0]][4] = $oItem.AllDayEvent $avAppointments[$avAppointments[0][0]][5] = $oItem.Importance $avAppointments[$avAppointments[0][0]][6] = $oItem.Body $avAppointments[$avAppointments[0][0]][7] = $oItem.Categories Next $oItem = "" $oColItems = "" $oFolder = "" $oNamespace = "" If $avAppointments[0][0] = 0 Then Return SetError(2, 0, 0) Redim $avAppointments[$avAppointments[0][0] + 1][8] Return $avAppointments EndFunc ;=============================================================================== ; ; Function Name: _OutlookDeleteAppointment() ; Description: Modify an appointment using Microsoft Outlook. ; Syntax.........: _OutlookDeleteAppointment($oOutlook, $sSubject, $sStartDate, $sNewSubject = "", $sNewStartDate = "", $sEndDate = "", $sLocation = "", $fAllDayEvent = False, $sBody = "", $sReminder = 15, $sShowTimeAs = "", $iImportance = "", $iSensitivity = "", $iRecurrenceType = "", $sPatternStartDate = "", $sPatternEndDate = "", $iInterval = "", $iDayOfWeekMask = "", $iDay_MonthOfMonth_Year = "", $iInstance = "") ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen(). ; $sSubject - The Subject of the Appointment. ; $sStartDate - Start date & time of the Appointment, format YYYY-MM-DD HH:MM - or what is set locally. ; $sNewSubject - Optional: New Subject of the Appointment. ; $sNewStartDate - Optional: New start date & time of the Appointment, format YYYY-MM-DD HH:MM - or what is set locally. ; $sEndDate - Optional: End date & time of the Appointment, format YYYY-MM-DD HH:MM - or what is set locally. ; Number of minutes. ; $sLocation - Optional: The location where the meeting is going to take place. ; $fAllDayEvent - Optional: True or False if set to True and the appointment is lasting for more than one day, end Date ; must be one day higher than the actual end Date. ; $sBody - Optional: The Body of the Appointment. ; $sReminder - Optional: Reminder in Minutes before start, 0 for no reminder ; $sShowTimeAs - Optional: $olBusy=2, $olFree=0, $olOutOfOffice=3, $olTentative=1 ; $iImportance - Optional: $olImportanceNormal=1, $olImportanceHigh=2, $olImportanceLow=0 ; $iSensitivity - Optional: $olNormal=0, $olPersonal=1, $olPrivate=2, $olConfidential=3 ; $iRecurrenceType - Optional: $olRecursDaily=0, $olRecursWeekly=1, $olRecursMonthly=2, $olRecursMonthNth=3, $olRecursYearly=5, $olRecursYearNth=6. Remove Recurrence=-1 ; $sPatternStartDate - Optional: Start Date of the Reccurent Appointment, format YYYY-MM-DD - or what is set locally. ; $sPatternEndDate - Optional: End Date of the Reccurent Appointment, format YYYY-MM-DD - or what is set locally. ; $iInterval - Optional: Interval between the Reccurent Appointment ; $iDayOfWeekMask - Optional: Add the values of the days the appointment shall occur. $olSunday=1, $olMonday=2, $olTuesday=4, $olWednesday=8, $olThursday=16, $olFriday=32, $olSaturday=64 ; $iDay_MonthOfMonth_Year - Optional: DayOfMonth or MonthOfYear, Day of the month or month of the year on which the recurring appointment or task occurs ; $iInstance - Optional: This property is only valid for recurrences of the $olRecursMonthNth and $olRecursYearNth type and allows the definition of a recurrence pattern that is only valid for the Nth occurrence, such as "the 2nd Sunday in March" pattern. The count is set numerically: 1 for the first, 2 for the second, and so on through 5 for the last. Values greater than 5 will generate errors when the pattern is saved. ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Returns 1 ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Illegal parameters ; @ERROR = 2 - Appointment not found ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-02-23 ; Modified: - ; ;=============================================================================== Func _OutlookDeleteAppointment($oOutlook, $sSubject, $sStartDate = "", $sEndDate = "", $sLocation = "", $fAllDayEvent = "", $sBody = "", $sReminder = "", $sShowTimeAs = "", $iImportance = "", $iSensitivity = "", $iRecurrenceType = "", $sPatternStartDate = "", $sPatternEndDate = "", $iInterval = "", $iDayOfWeekMask = "", $iDay_MonthOfMonth_Year = "", $iInstance = "") Local $iRc = 0, $fItemFound = False, $fIsRecurring, $oRecPatt, $oOrig Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Local $oNamespace = $oOutlook.GetNamespace("MAPI") Local $oFolder = $oNamespace.GetDefaultFolder($olFolderCalendar) Local $oColItems = $oFolder.Items $oColItems.Sort("[Start]") $oColItems.IncludeRecurrences = True Local $sFilter = '[Subject] = "' & $sSubject & '"' Local $oFilteredItems = $oColItems.Restrict($sFilter) For $oItem In $oFilteredItems $fItemFound = True $fIsRecurring = $oItem.IsRecurring If $fIsRecurring = False Then $oItem.Delete $oItem.Close $iRc = @ERROR If $iRc = 0 Or $iRc = -2147352561 Then Return 1 Else Return SetError(9, 0, 0) EndIf Else ; ----- Recurring Appointment, change all occurences $oItem.GetFirst $oRecPatt = $oItem.GetRecurrencePattern ;With $oRecPatt If $sNewStartDate <> "" Then If Not _DateIsValid($sNewStartDate) Then Return SetError(1, 0, 0) $oRecPatt.StartTime = $sNewStartDate EndIf If $sEndDate <> "" Then If _DateIsValid($sEndDate) Then $oRecPatt.EndTime = $sEndDate Else $oRecPatt.Duration = Number($sEndDate) EndIf EndIf $oRecPatt.Save $oRecPatt.Close ;Endwith $oOrig = $oRecPatt.Parent $oOrig.Delete $oOrig.Close $iRc = @ERROR If $iRc = 0 Or $iRc = -2147352561 Then Return 1 Else Return SetError(9, 0, 0) EndIf EndIf Next If $fItemFound = False Then Return SetError(2, 0, 0) EndFunc ;=============================================================================== ; ; Function Name: _OutlookCreateContact() ; Description: Create a contact using Microsoft Outlook. ; Syntax.........: _OutlookCreateContact($oOutlook, $sFirstName, $sLastName, $sEmail1Adress, $sTitle = "", $sMiddleName = "", $sSuffix = "", $sEmail1DisplayName = "", $sEmail2Adress = "", $sEmail2DisplayName = "", $sEmail3Adress = "", $sEmail3DisplayName = "", $sJobTitle = "", $sCompanyName = "", $sBody = "", $sSelectedMailingAddress = "", $sCategories = "", $sMobileTelephoneNumber = "", $sHomeTelephoneNumber = "", $sHomeAddressStreet = "", $sHomeAddressCity = "", $sHomeAddressState = "", $sHomeAddressPostalCode = "", $sHomeAddressCountry = "", $sBusinessTelephoneNumber = "", $sBusinessAddressStreet = "", $sBusinessAddressCity = "", $sBusinessAddressState = "", $sBusinessAddressPostalCode = "", $sBusinessAddressCountry = "", $sOtherTelephoneNumber = "", $sOtherAddressStreet = "", $sOtherAddressCity = "", $sOtherAddressState = "", $sOtherAddressPostalCode = "", $sOtherAddressCountry = "", $sWebPage = "", $sIMaddress = "",$sBirthday = "", $sDepartment = "", $sOfficeLocation = "", $sProfession = "", $sManagerName = "", $sAssistantName = "", $sNickName = "", $sSpouse = "", $sAnniversary = "") ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen(). ; $sFirstName - First Name ; $sLastName - Last Name ; $sEmail1Adress - E-mail address 1 ; $sTitle - Optional: Title, example: Mr, Mrs, Dr ; $sMiddleName - Optional: Middle Name ; $sSuffix - Optional: Suffix, example: I, II, III, Jr, Sr ; $sEmail1DisplayName - Optional: E-mail display name 1 ; $sEmail2Adress - Optional: E-mail address 2 ; $sEmail2DisplayName - Optional: E-mail display name 2 ; $sEmail3Adress - Optional: E-mail address 3 ; $sEmail3DisplayName - Optional: E-mail display name 3 ; $sJobTitle - Optional: Job Title ; $sCompanyName - Optional: Company Name ; $sBody - Optional: Body ; $sSelectedMailingAddress - Optional: Which address is the selected ? ; $olNone=0, $olHome=1, $olBusiness=2, $olOther=3 ; $sCategories - Optional: Categories for the note, separated by ; ; $sMobileTelephoneNumber - Optional: Mobile Phone Number ; $sHomeTelephoneNumber - Optional: Home Phone Number ; $sHomeAddressStreet - Optional: Home Address ; $sHomeAddressCity - Optional: Home City ; $sHomeAddressState - Optional: Home State ; $sHomeAddressPostalCode - Optional: Home Postal Code ; $sHomeAddressCountry - Optional: Home Country ; $sBusinessTelephoneNumber - Optional: Business Phone number ; $sBusinessAddressStreet - Optional: Business Address ; $sBusinessAddressCity - Optional: Business City ; $sBusinessAddressState - Optional: Business State ; $sBusinessAddressPostalCode - Optional: Business Postal Code ; $sBusinessAddressCountry - Optional: Business Country ; $sOtherTelephoneNumber - Optional: Other Phone Number ; $sOtherAddressStreet - Optional: Other Address ; $sOtherAddressCity - Optional: Other City ; $sOtherAddressState - Optional: Other State ; $sOtherAddressPostalCode - Optional: Other Postal Code ; $sOtherAddressCountry - Optional: Other Country ; $sWebPage - Optional: WebPage ; $sIMaddress - Optional: Instant Messenger address ; $sBirthday - Optional: Birthday, format YYYY-MM-DD - or what is set locally. ; $sDepartment - Optional: Department ; $sOfficeLocation - Optional: Office ; $sProfession - Optional: Profession ; $sManagerName - Optional: The name of your manager ; $sAssistantName - Optional: The name of your assistant ; $sNickName - Optional: Your nickname ; $sSpouse - Optional: Your Spouse ; $sAnniversary - Optional: Anniversary to remember ; ; ***** On the General Tab I have failed to find how to set Contacts and Private ***** ; ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Returns 1 ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Illegal parameters ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-02-12 ; Modified: - ; ;=============================================================================== Func _OutlookCreateContact($oOutlook, $sFirstName, $sLastName, $sEmail1Adress, $sTitle = "", $sMiddleName = "", $sSuffix = "", $sEmail1DisplayName = "", $sEmail2Adress = "", $sEmail2DisplayName = "", $sEmail3Adress = "", $sEmail3DisplayName = "", $sJobTitle = "", $sCompanyName = "", $sBody = "", $sSelectedMailingAddress = "", $sCategories = "", $sMobileTelephoneNumber = "", $sHomeTelephoneNumber = "", $sHomeAddressStreet = "", $sHomeAddressCity = "", $sHomeAddressState = "", $sHomeAddressPostalCode = "", $sHomeAddressCountry = "", $sBusinessTelephoneNumber = "", $sBusinessAddressStreet = "", $sBusinessAddressCity = "", $sBusinessAddressState = "", $sBusinessAddressPostalCode = "", $sBusinessAddressCountry = "", $sOtherTelephoneNumber = "", $sOtherAddressStreet = "", $sOtherAddressCity = "", $sOtherAddressState = "", $sOtherAddressPostalCode = "", $sOtherAddressCountry = "", $sWebPage = "", $sIMaddress = "",$sBirthday = "", $sDepartment = "", $sOfficeLocation = "", $sProfession = "", $sManagerName = "", $sAssistantName = "", $sNickName = "", $sSpouse = "", $sAnniversary = "") Local $iRc = 0 If $sFirstName = "" Or $sLastName = "" Or $sEmail1Adress = "" Then Return SetError(1, 0, 0) Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Local $oContact = $oOutlook.CreateItem($olContactItem) With $oContact .FirstName = $sFirstName .LastName = $sLastName .Email1Address = $sEmail1Adress .Email1AddressType = "SMTP" If $sTitle <> "" Then .Title = $sTitle If $sMiddleName <> "" Then .MiddleName = $sMiddleName If $sSuffix <> "" Then .Suffix = $sSuffix If $sEmail1DisplayName <> "" Then .Email1DisplayName = $sEmail1DisplayName If $sEmail2Adress <> "" Then .Email2Address = $sEmail2Adress .Email2AddressType = "SMTP" EndIf If $sEmail2DisplayName <> "" Then .Email2DisplayName = $sEmail2DisplayName If $sEmail3Adress <> "" Then .Email3Address = $sEmail3Adress .Email3AddressType = "SMTP" EndIf If $sEmail3DisplayName <> "" Then .Email3DisplayName = $sEmail3DisplayName If $sJobTitle <> "" Then .JobTitle = $sJobTitle If $sCompanyName <> "" Then .CompanyName = $sCompanyName If $sBody <> "" Then .Body = $sBody If $sSelectedMailingAddress <> "" Then .SelectedMailingAddress = $sSelectedMailingAddress If $sCategories <> "" Then .Categories = $sCategories If $sMobileTelephoneNumber <> "" Then .MobileTelephoneNumber = $sMobileTelephoneNumber If $sHomeTelephoneNumber <> "" Then .HomeTelephoneNumber = $sHomeTelephoneNumber If $sHomeAddressStreet <> "" Then .HomeAddressStreet = $sHomeAddressStreet If $sHomeAddressCity <> "" Then .HomeAddressCity = $sHomeAddressCity If $sHomeAddressState <> "" Then .HomeAddressState = $sHomeAddressState If $sHomeAddressPostalCode <> "" Then .HomeAddressPostalCode = $sHomeAddressPostalCode If $sHomeAddressCountry <> "" Then .HomeAddressCountry = $sHomeAddressCountry If $sBusinessTelephoneNumber <> "" Then .BusinessTelephoneNumber = $sBusinessTelephoneNumber If $sBusinessAddressStreet <> "" Then .BusinessAddressStreet = $sBusinessAddressStreet If $sBusinessAddressCity <> "" Then .BusinessAddressCity = $sBusinessAddressCity If $sBusinessAddressState <> "" Then .BusinessAddressState = $sBusinessAddressState If $sBusinessAddressPostalCode <> "" Then .BusinessAddressPostalCode = $sBusinessAddressPostalCode If $sBusinessAddressCountry <> "" Then .BusinessAddressCountry = $sBusinessAddressCountry If $sOtherTelephoneNumber <> "" Then .OtherTelephoneNumber = $sOtherTelephoneNumber If $sOtherAddressStreet <> "" Then .OtherAddressStreet = $sOtherAddressStreet If $sOtherAddressCity <> "" Then .OtherAddressCity = $sOtherAddressCity If $sOtherAddressState <> "" Then .OtherAddressState = $sOtherAddressState If $sOtherAddressPostalCode <> "" Then .OtherAddressPostalCode = $sOtherAddressPostalCode If $sOtherAddressCountry <> "" Then .OtherAddressCountry = $sOtherAddressCountry If $sWebPage <> "" Then .WebPage = $sWebPage If $sIMaddress <> "" Then .IMaddress = $sIMaddress If $sBirthday <> "" Then .Birthday = $sBirthday If $sDepartment <> "" Then .Department = $sDepartment If $sOfficeLocation <> "" Then .OfficeLocation = $sOfficeLocation If $sProfession <> "" Then .Profession = $sProfession If $sManagerName <> "" Then .ManagerName = $sManagerName If $sAssistantName <> "" Then .AssistantName = $sAssistantName If $sNickName <> "" Then .NickName = $sNickName If $sSpouse <> "" Then .Spouse = $sSpouse If $sAnniversary <> "" Then .Anniversary = $sAnniversary .Close ($olSave) $iRc = @ERROR EndWith If $iRc = 0 Then Return 1 Else Return SetError(9, 0, 0) EndIf EndFunc ;=============================================================================== ; ; Function Name: _OutlookGetContacts() ; Description: Get contacts using Microsoft Outlook, returning an array of all information ; Syntax.........: _OutlookGetContacts($oOutlook, $sFirstName = "", $sLastName = "", $sEmail1Adress = "", $fSearchPart = False, $fFullList = False, $sWarningClick = "") ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen(). ; $sFirstName - Optional: First Name ; $sLastName - Optional: Last Name ; $sEmail1Adress - Optional: E-mail address 1 ; fSearchPart - Optional: Default: False, True if match part of the string ; fFullList - Optional: Default: False, If False, only return Small array. ; $sWarningClick - Optional: The Entire SearchString to 'OutlookWarning2.exe', Default = None ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Array in the following format: [1000][5] ; [0][0] - Total Number of items ; [1][0] - First Name ; [1][1] - Last Name ; [1][2] - E-mail address 1 ; [1][3] - E-mail address 2 ; [1][4] - Mobile Phone Number ; [n][n] - Item n ; - Array in the following format: [1000][46] ; [0][0] - Total Number of items ; [1][0] - First Name ; [1][1] - Last Name ; [1][2] - E-mail address 1 ; [1][3] - Title, example: Mr, Mrs, Dr ; [1][4] - Middle Name ; [1][5] - Suffix, example: I, II, III, Jr, Sr ; [1][6] - E-mail display name 1 ; [1][7] - E-mail address 2 ; [1][8] - E-mail display name 2 ; [1][9] - E-mail address 3 ; [1][10] - E-mail display name 3 ; [1][11] - Job Title ; [1][12] - Company Name ; [1][13] - Body ; [1][14] - Which address is the selected ? ; $olNone=0, $olHome=1, $olBusiness=2, $olOther=3 ; [1][15] - Categories for the note, separated by ; ; [1][16] - Mobile Phone Number ; [1][17] - Home Phone Number ; [1][18] - Home Address ; [1][19] - Home City ; [1][20] - Home State ; [1][21] - Home Postal Code ; [1][22] - Home Country ; [1][23] - Business Phone number ; [1][24] - Business Address ; [1][25] - Business City ; [1][26] - Business State ; [1][27] - Business Postal Code ; [1][28] - Business Country ; [1][29] - Other Phone Number ; [1][30] - Other Address ; [1][31] - Other City ; [1][32] - Other State ; [1][33] - Other Postal Code ; [1][34] - Other Country ; [1][35] - WebPage ; [1][36] - Instant Messenger address ; [1][37] - Birthday, format YYYY-MM-DD - or what is set locally. ; [1][38] - Department ; [1][39] - Office ; [1][40] - Profession ; [1][41] - The name of your manager ; [1][42] - The name of your assistant ; [1][43] - Your nickname ; [1][44] - Your Spouse ; [1][45] - Anniversary to remember ; [n][n] - Item n ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Illegal parameters ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-03-04 ; Modified: - ; ;=============================================================================== Func _OutlookGetContacts($oOutlook, $sFirstName = "", $sLastName = "", $sEmail1Adress = "", $fSearchPart = False, $fFullList = False, $sWarningClick = "") If $sWarningClick <> "" And FileExists($sWarningClick) = 0 Then Return SetError(2, 0, 0) Else Run($sWarningClick) EndIf ;Local $oSecurityManager = ObjCreate("AddinExpress.Outlook.SecurityManager") ;msgbox(0,"SM",IsObj($oSecurityManager)) ;$oSecurityManager.DisableOOMWarnings = True Local $iRc = 0, $iArraySize Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Local $oNamespace = $oOutlook.GetNamespace("MAPI") Local $oFolder = $oNamespace.GetDefaultFolder($olFolderContacts) Local $oColItems = $oFolder.Items Local $iNumOfContacts = $oColItems.Count If $fFullList = True Then $iArraySize = 46 Else $iArraySize = 5 EndIf Local $asContacts[1000][$iArraySize], $sTemp $asContacts[0][0] = 0 ; Msgbox(0,"antal",$iNumOfContacts) For $iNum = 1 to $iNumOfContacts ; Msgbox(0,"antal",$iNum & " / " & $iNumOfContacts) If $oColItems.Item($iNum).Class <> $olContact Then ContinueLoop If $sFirstName <> "" Then If $fSearchPart = False Then If $sFirstName <> $oColItems.Item($iNum).FirstName Then ContinueLoop Else If StringInStr($oColItems.Item($iNum).FirstName,$sFirstName) = 0 Then ContinueLoop EndIf EndIf If $sLastName <> "" Then If $fSearchPart = False Then If $sLastName <> $oColItems.Item($iNum).LastName Then ContinueLoop Else If StringInStr($oColItems.Item($iNum).LastName,$sLastName) = 0 Then ContinueLoop EndIf EndIf If $sEmail1Adress <> "" Then $sTemp = $oColItems.Item($iNum).Email1Address If $fSearchPart = False Then If $sEmail1Adress <> $sTemp Then ContinueLoop Else If StringInStr($sTemp,$sEmail1Adress) = 0 Then ContinueLoop EndIf EndIf $asContacts[0][0] += 1 If $fFullList = False Then $asContacts[$asContacts[0][0]][0] = $oColItems.Item($iNum).FirstName $asContacts[$asContacts[0][0]][1] = $oColItems.Item($iNum).LastName $asContacts[$asContacts[0][0]][2] = $oColItems.Item($iNum).Email1Address $asContacts[$asContacts[0][0]][3] = $oColItems.Item($iNum).Email2Address $asContacts[$asContacts[0][0]][4] = $oColItems.Item($iNum).MobileTelephoneNumber Else $asContacts[$asContacts[0][0]][3] = $oColItems.Item($iNum).Title $asContacts[$asContacts[0][0]][4] = $oColItems.Item($iNum).MiddleName $asContacts[$asContacts[0][0]][5] = $oColItems.Item($iNum).Suffix $asContacts[$asContacts[0][0]][6] = $oColItems.Item($iNum).Email1DisplayName $asContacts[$asContacts[0][0]][7] = $oColItems.Item($iNum).Email2Address $asContacts[$asContacts[0][0]][8] = $oColItems.Item($iNum).Email2DisplayName $asContacts[$asContacts[0][0]][9] = $oColItems.Item($iNum).Email3Address $asContacts[$asContacts[0][0]][10] = $oColItems.Item($iNum).Email3DisplayName $asContacts[$asContacts[0][0]][11] = $oColItems.Item($iNum).JobTitle $asContacts[$asContacts[0][0]][12] = $oColItems.Item($iNum).CompanyName $asContacts[$asContacts[0][0]][13] = $oColItems.Item($iNum).Body $asContacts[$asContacts[0][0]][14] = $oColItems.Item($iNum).SelectedMailingAddress $asContacts[$asContacts[0][0]][15] = $oColItems.Item($iNum).Categories $asContacts[$asContacts[0][0]][16] = $oColItems.Item($iNum).MobileTelephoneNumber $asContacts[$asContacts[0][0]][17] = $oColItems.Item($iNum).HomeTelephoneNumber $asContacts[$asContacts[0][0]][18] = $oColItems.Item($iNum).HomeAddressStreet $asContacts[$asContacts[0][0]][19] = $oColItems.Item($iNum).HomeAddressCity $asContacts[$asContacts[0][0]][20] = $oColItems.Item($iNum).HomeAddressState $asContacts[$asContacts[0][0]][21] = $oColItems.Item($iNum).HomeAddressPostalCode $asContacts[$asContacts[0][0]][22] = $oColItems.Item($iNum).HomeAddressCountry $asContacts[$asContacts[0][0]][23] = $oColItems.Item($iNum).BusinessTelephoneNumber $asContacts[$asContacts[0][0]][24] = $oColItems.Item($iNum).BusinessAddressStreet $asContacts[$asContacts[0][0]][25] = $oColItems.Item($iNum).BusinessAddressCity $asContacts[$asContacts[0][0]][26] = $oColItems.Item($iNum).BusinessAddressState $asContacts[$asContacts[0][0]][27] = $oColItems.Item($iNum).BusinessAddressPostalCode $asContacts[$asContacts[0][0]][28] = $oColItems.Item($iNum).BusinessAddressCountry $asContacts[$asContacts[0][0]][29] = $oColItems.Item($iNum).OtherTelephoneNumber $asContacts[$asContacts[0][0]][30] = $oColItems.Item($iNum).OtherAddressStreet $asContacts[$asContacts[0][0]][31] = $oColItems.Item($iNum).OtherAddressCity $asContacts[$asContacts[0][0]][32] = $oColItems.Item($iNum).OtherAddressState $asContacts[$asContacts[0][0]][33] = $oColItems.Item($iNum).OtherAddressPostalCode $asContacts[$asContacts[0][0]][34] = $oColItems.Item($iNum).OtherAddressCountry $asContacts[$asContacts[0][0]][35] = $oColItems.Item($iNum).WebPage $asContacts[$asContacts[0][0]][36] = $oColItems.Item($iNum).IMaddress $asContacts[$asContacts[0][0]][37] = $oColItems.Item($iNum).Birthday $asContacts[$asContacts[0][0]][38] = $oColItems.Item($iNum).Department $asContacts[$asContacts[0][0]][39] = $oColItems.Item($iNum).OfficeLocation $asContacts[$asContacts[0][0]][40] = $oColItems.Item($iNum).Profession $asContacts[$asContacts[0][0]][41] = $oColItems.Item($iNum).ManagerName $asContacts[$asContacts[0][0]][42] = $oColItems.Item($iNum).AssistantName $asContacts[$asContacts[0][0]][43] = $oColItems.Item($iNum).NickName $asContacts[$asContacts[0][0]][44] = $oColItems.Item($iNum).Spouse $asContacts[$asContacts[0][0]][45] = $oColItems.Item($iNum).Anniversary EndIf Next $iRc = @ERROR Redim $asContacts[$asContacts[0][0] + 1][$iArraySize] If $iRc = 0 Then ;$oSecurityManager.DisableOOMWarnings = True Return $asContacts Else Return SetError(9, 0, 0) EndIf EndFunc ;=============================================================================== ; ; Function Name: _OutlookCreateDistList() ; Description: Create a distribution and DL member using Microsoft Outlook, if Distribution list exist, create only DL member ; Syntax.........: _OutlookCreateDistList($oOutlook, $sDistList, $sFullName, $sEmailAddress, $sNotes = "", $fSameFullName = False , $sWarningClick = "") ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen(). ; $sDistList - Name of Distribution list ; $sFullName - Full name of person in distribution list ; $sEmailAddress - E-mail of person in distribution list or "AddMembers" - Adds people from contacts or global address list ; $sNotes - Optional: Notes about the distribution list ; $fSameFullName - Optional: Accept Multiple persons with same name in Distribution List, Default = False ; $sWarningClick - Optional: The Entire SearchString to 'OutlookWarning2.exe', Default = None ; ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Returns 1 ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Illegal parameters ; @ERROR = 2 - OutlookWarning2.exe not found. ; @ERROR = 3 - $fSameFullName = False AND $sFullName already found in distrbution list ; @ERROR = 4 - $sEmailAddress already found in distributionslist ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-02-17 ; Modified: - ; ;=============================================================================== Func _OutlookCreateDistList($oOutlook, $sDistList, $sFullName, $sEmailAddress, $sNotes = "", $fSameFullName = False , $sWarningClick = "") Local $iRc = 0, $oMemberName, $oMemberAddress, $oRecipients Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") If $sWarningClick <> "" And FileExists($sWarningClick) = 0 Then Return SetError(2, 0, 0) Else Run($sWarningClick) EndIf Local $oNameSpace = $oOutlook.GetNamespace("MAPI") Local $oMailItem = $oOutlook.CreateItem($olMailItem) Local $oDistList = $oOutlook.CreateItem($olDistributionListItem) Local $oContacts = $oNameSpace.GetDefaultFolder($olFolderContacts) Local $oDistListItem = $oContacts.Items( $sDistList ) If @ERROR = -2147352567 Then ; Add Group and member SetError(0, 0, 0) If $sEmailAddress = "AddMembers" Then $oRecipients = $oMailItem.Recipients $oDistList.DLName = $sDistList $oDistList.Body = $sNotes $oRecipients.Add ($sFullName) $oRecipients.ResolveAll $oDistList.AddMembers ($oRecipients) $oDistList.Save $oDistList.Close ($olSave) $iRc = @ERROR Else $oRecipients = $oOutlook.Session.CreateRecipient($sFullName & " <" & $sEmailAddress & ">") $oRecipients.Resolve $oDistList.AddMember ($oRecipients) $oDistList.DLName = $sDistList $oDistList.Body = $sNotes $oDistList.Save $oDistList.Close ($olSave) $iRc = @ERROR EndIf Else ; Add Member only SetError(0, 0, 0) If $sEmailAddress = "AddMembers" Then For $iMember = 1 to $oDistListItem.MemberCount $oMemberName = $oDistListItem.GetMember($iMember).Name If $fSameFullName = False and $oMemberName = $sFullName Then Return SetError(3, 0, 0) Next $oRecipients = $oMailItem.Recipients $oRecipients.Add ($sFullName) $oRecipients.ResolveAll $oDistListItem.AddMembers ($oRecipients) $oDistListItem.Save $oDistListItem.Close ($olSave) $iRc = @ERROR Else For $iMember = 1 to $oDistListItem.MemberCount $oMemberName = $oDistListItem.GetMember($iMember).Name $oMemberAddress = $oDistListItem.GetMember($iMember).Address If $fSameFullName = False and $oMemberName = $sFullName Then Return SetError(3, 0, 0) If $oMemberAddress = $sEmailAddress Then Return SetError(4, 0, 0) Next $oRecipients = $oOutlook.Session.CreateRecipient($sFullName & " <" & $sEmailAddress & ">") $oRecipients.Resolve $oDistListItem.AddMember ($oRecipients) $oDistListItem.Save $oDistListItem.Close ($olSave) $iRc = @ERROR EndIf EndIf If $iRc = 0 Then Return 1 Else Return SetError(9, 0, 0) EndIf EndFunc ;=============================================================================== ; ; Function Name: _OutlookGetDistLists() ; Description: Get Distribution lists and their members using Microsoft Outlook, returning an array of all information ; Syntax.........: _OutlookGetDistLists($oOutlook, $sDistListName = "", $sFullName = "", $sEmailAddress = "", $fSearchPart = False, $sWarningClick = "") ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen(). ; $sDistListName - Optional: Distribution list Name ; $sFullName - Optional: Full Name ; $sEmailAddress - Optional: E-mail address ; fSearchPart - Optional: Default: False ; $sWarningClick - Optional: The Entire SearchString to 'OutlookWarning2.exe', Default = None ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Array in the following format: [1000][3] ; [0][0] - Total Number of items ; [1][0] - Distribution List ; [1][1] - Full Name ; [1][2] - E-mail address ; [n][n] - Item n ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Illegal parameters ; @ERROR = 2 - OutlookWarning2.exe not found. ; @ERROR = 3 - Both Distribution list And (Full name or E-mail address specified). ; @ERROR = 4 - More than 999 records found, the first 999 records will be returned ; @ERROR = 5 - No distribution list found. ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-03-04 ; Modified: - ; ;=============================================================================== Func _OutlookGetDistLists($oOutlook, $sDistListName = "", $sFullName = "", $sEmailAddress = "", $fSearchPart = False, $sWarningClick = "") If $sWarningClick <> "" And FileExists($sWarningClick) = 0 Then Return SetError(2, 0, 0) Else Run($sWarningClick) EndIf If $sDistListName <> "" And ($sFullName <> "" or $sEmailAddress <> "") Then Return SetError(3, 0, 0) Local $iRc = 0 Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Local $oNamespace = $oOutlook.GetNamespace("MAPI") Local $oFolder = $oNamespace.GetDefaultFolder($olFolderContacts) Local $oColItems = $oFolder.Items Local $iNumOfDistLists = $oColItems.Count Local $asDistList[1000][3] $asDistList[0][0] = 0 For $iNum = 1 to $iNumOfDistLists If $oColItems.Item($iNum).Class <> $olDistributionList Then ContinueLoop If $sDistListName <> "" Then If $fSearchPart = False Then If $sDistListName <> $oColItems.Item($iNum).DLName Then ContinueLoop Else If StringInStr($oColItems.Item($iNum).DLName,$sDistListName) = 0 Then ContinueLoop EndIf EndIf If $asDistList[0][0] = 999 Then SetError (4) Return $asDistList EndIf For $iMember = 1 to $oColItems.Item($iNum).MemberCount If $sFullName <> "" Then If $fSearchPart = False Then If $sFullName <> $oColItems.Item($iNum).GetMember($iMember).Name Then ContinueLoop Else If StringInStr($oColItems.Item($iNum).GetMember($iMember).Name,$sFullName) = 0 Then ContinueLoop EndIf EndIf If $sEmailAddress <> "" Then If $fSearchPart = False Then If $sEmailAddress <> $oColItems.Item($iNum).GetMember($iMember).Address Then ContinueLoop Else If StringInStr($oColItems.Item($iNum).GetMember($iMember).Address,$sEmailAddress) = 0 Then ContinueLoop EndIf EndIf $asDistList[0][0] += 1 $asDistList[$asDistList[0][0]][0] = $oColItems.Item($iNum).DLName $asDistList[$asDistList[0][0]][1] = $oColItems.Item($iNum).GetMember($iMember).Name $asDistList[$asDistList[0][0]][2] = $oColItems.Item($iNum).GetMember($iMember).Address Next Next $iRc = @ERROR Redim $asDistList[$asDistList[0][0] + 1][3] If $asDistList[0][0] = 0 Then Return SetError(5, 0, 0) If $iRc = 0 Then Return $asDistList Else Return SetError(9, 0, 0) EndIf EndFunc ;=============================================================================== ; ; Function Name: _OutlookDeleteDistListMember() ; Description: Delete Distribution list member ; Syntax.........: _OutlookDeleteDistListMember($oOutlook, $sDistListName, $sFullName = "", $sEmailAddress = "", $sWarningClick = "") ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen(). ; $sDistListName - Optional: Distribution list Name ; $sFullName - Optional: Full Name ; $sEmailAddress - Optional: E-mail address ; $sWarningClick - Optional: The Entire SearchString to 'OutlookWarning2.exe', Default = None ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Return 1 ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Illegal parameters ; @ERROR = 2 - OutlookWarning2.exe not found. ; @ERROR = 3 - Distribution list not found. ; @ERROR = 4 - Distribution list member not found. ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-03-09 ; Modified: - ; ;=============================================================================== Func _OutlookDeleteDistListMember($oOutlook, $sDistListName = "", $sFullName = "", $sEmailAddress = "", $sWarningClick = "") If $sWarningClick <> "" And FileExists($sWarningClick) = 0 Then Return SetError(2, 0, 0) Else Run($sWarningClick) EndIf Local $iRc = 0, $fDistListFound = False, $fDistListMemberFound = False Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Local $oNamespace = $oOutlook.GetNamespace("MAPI") Local $oFolder = $oNamespace.GetDefaultFolder($olFolderContacts) Local $oColItems = $oFolder.Items Local $iNumOfDistLists = $oColItems.Count For $iNum = 1 to $iNumOfDistLists If $oColItems.Item($iNum).Class <> $olDistributionList Then ContinueLoop If $sDistListName <> $oColItems.Item($iNum).DLName Then ContinueLoop $fDistListFound = True For $iMember = 1 to $oColItems.Item($iNum).MemberCount If ($sFullName <> "") And ($sEmailAddress <> "") Then If $sFullName = $oColItems.Item($iNum).GetMember($iMember).Name And $sEmailAddress = $oColItems.Item($iNum).GetMember($iMember).Address Then $fDistListMemberFound = True $oColItems.Item($iNum).GetMember($iMember).resolve $oColItems.Item($iNum).RemoveMember ($oColItems.Item($iNum).GetMember($iMember)) $oColItems.Item($iNum).Save $oColItems.Item($iNum).Close ($olSave) Exitloop 2 Else ContinueLoop EndIf Else If $sFullName <> "" Then If $sFullName = $oColItems.Item($iNum).GetMember($iMember).Name Then $fDistListMemberFound = True $oColItems.Item($iNum).GetMember($iMember).resolve $oColItems.Item($iNum).RemoveMember ($oColItems.Item($iNum).GetMember($iMember)) $oColItems.Item($iNum).Save $oColItems.Item($iNum).Close ($olSave) Exitloop 2 Else ContinueLoop EndIf Else If $sEmailAddress = $oColItems.Item($iNum).GetMember($iMember).Address Then $fDistListMemberFound = True $oColItems.Item($iNum).GetMember($iMember).resolve $oColItems.Item($iNum).RemoveMember ($oColItems.Item($iNum).GetMember($iMember)) $oColItems.Item($iNum).Save $oColItems.Item($iNum).Close ($olSave) Exitloop 2 Else ContinueLoop EndIf EndIf EndIf Next Next $iRc = @ERROR If $fDistListFound = False Then Return SetError(3, 0, 0) If $fDistListMemberFound = False Then Return SetError(4, 0, 0) If $iRc = 0 Then Return 1 Else Return SetError(9, 0, 0) EndIf EndFunc ;=============================================================================== ; ; Function Name: _OutlookDeleteDistList() ; Description: Delete Distribution list ; Syntax.........: _OutlookDeleteDistList($oOutlook, $sDistListName) ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen(). ; $sDistListName - Distribution list Name ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Return 1 ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Distribution list not found. ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-03-09 ; Modified: - ; ;=============================================================================== Func _OutlookDeleteDistList($oOutlook, $sDistListName) Local $iRc = 0, $fDistListFound = False Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Local $oNamespace = $oOutlook.GetNamespace("MAPI") Local $oFolder = $oNamespace.GetDefaultFolder($olFolderContacts) Local $oColItems = $oFolder.Items Local $iNumOfDistLists = $oColItems.Count For $iNum = 1 to $iNumOfDistLists If $oColItems.Item($iNum).Class <> $olDistributionList Then ContinueLoop If $sDistListName <> $oColItems.Item($iNum).DLName Then ContinueLoop $fDistListFound = True $oColItems.Item($iNum).Delete ExitLoop Next $iRc = @ERROR If $fDistListFound = False Then Return SetError(1, 0, 0) If $iRc = 0 Then Return 1 Else Return SetError(9, 0, 0) EndIf EndFunc ;=============================================================================== ; ; Function Name: _OutlookModifyDistList() ; Description: Modify Distribution list ; Syntax.........: _OutlookModifyDistList($oOutlook, $sDistListName, $sNewDistListName = "", $sNotes = "", $fMergeWithCurrentNotes = False, $sCategories = "", $sWarningClick = "") ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen(). ; $sDistListName - Optional: Distribution list Name ; $sFullName - Optional: Full Name ; $sEmailAddress - Optional: E-mail address ; $sWarningClick - Optional: The Entire SearchString to 'OutlookWarning2.exe', Default = None ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Return 1 ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Illegal parameters ; @ERROR = 2 - OutlookWarning2.exe not found. ; @ERROR = 3 - Distribution list not found. ; @ERROR = 4 - Distribution list member not found. ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-03-09 ; Modified: - ; ;=============================================================================== Func _OutlookModifyDistList($oOutlook, $sDistListName, $sNewDistListName = "", $sNotes = "", $fMergeWithCurrentNotes = False, $sCategories = "", $fMergeWithCurrentCategories = False, $sWarningClick = "") If $sWarningClick <> "" And FileExists($sWarningClick) = 0 Then Return SetError(2, 0, 0) Else Run($sWarningClick) EndIf Local $iRc = 0, $fDistListFound = False, $sTemp Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Local $oNamespace = $oOutlook.GetNamespace("MAPI") Local $oFolder = $oNamespace.GetDefaultFolder($olFolderContacts) Local $oColItems = $oFolder.Items Local $iNumOfDistLists = $oColItems.Count For $iNum = 1 to $iNumOfDistLists If $oColItems.Item($iNum).Class <> $olDistributionList Then ContinueLoop If $sDistListName <> $oColItems.Item($iNum).DLName Then ContinueLoop $fDistListFound = True If $sNewDistListName <> "" Then ;$oColItems.Item($iNum).DLName = $sNewDistListName $oColItems.Item($iNum).Subject = "Kalle" EndIf If $sNotes <> "" Then If $fMergeWithCurrentNotes = True Then $sTemp = $oColItems.Item($iNum).Body $oColItems.Item($iNum).Body = $sTemp & @CRLF & $sNotes Else $oColItems.Item($iNum).Body = $sNotes EndIf EndIf If $sCategories <> "" Then If $fMergeWithCurrentCategories = True Then $sTemp = $oColItems.Item($iNum).Categories $oColItems.Item($iNum).Categories = $sTemp & @CRLF & $sCategories Else $oColItems.Item($iNum).Categories = $sCategories EndIf EndIf $oColItems.Item($iNum).Save $oColItems.Item($iNum).Close ($olSave) ExitLoop Next $iRc = @ERROR If $fDistListFound = False Then Return SetError(3, 0, 0) If $iRc = 0 Then Return 1 Else Return SetError(9, 0, 0) EndIf EndFunc ;=============================================================================== ; ; Function Name: _OutlookFolderExist() ; Description: Check if an Outlook folder exist ; Syntax.........: _OutlookFolderExist($oOutlook, $sFolder) ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen(). ; $sFolder - The Name of the Folder ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Return 1 ; On Failure - Return 0, and sets @ERROR > 0 ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-03-11 ; Modified: ; ;=============================================================================== Func _OutlookFolderExist($oOutlook, $sFolder) Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Local $oNamespace = $oOutlook.GetNamespace("MAPI") If StringRight($sFolder,1) = "\" Then $sFolder = StringLeft($sFolder,StringLen($sFolder) - 1) Local $sSubFolderParts = StringSplit ( $sFolder, "\") Local $oFolder = $oNamespace.GetDefaultFolder($sSubFolderParts[1]) Local $iFolderFound = 0 If IsObj($oFolder) = 0 Then Return 0 Else $iFolderFound = 1 EndIf Local $sRootFolderName = $oFolder.Name If $sSubFolderParts[0] > 1 Then $iFolderFound = _OutlookFindRootFolder($oFolder,$sRootFolderName,StringMid($sFolder,StringInStr($sFolder,"\")+ 1)) EndIf If $iFolderFound = 0 Then Return 0 Return 1 EndFunc ;=============================================================================== ; ; Function Name: _OutlookFolderAdd() ; Description: Add a new Outlook folder ; Syntax.........: _OutlookFolderAdd($oOutlook, $sFolder) ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen(). ; $sFolder - The Name of the Folder ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Return 1 ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Folder does already exist. ; @ERROR = 2 - Couldn't find root folder. ; @ERROR = 3 - Error when creating folder. ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-03-11 ; Modified: ; ;=============================================================================== Func _OutlookFolderAdd($oOutlook, $sFolder) If StringRight($sFolder,1) = "\" Then $sFolder = StringLeft($sFolder,StringLen($sFolder) - 1) If _OutlookFolderExist($oOutlook, $sFolder) Then Return SetError(1, 0, 0) Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Local $oNamespace = $oOutlook.GetNamespace("MAPI") Local $sSubFolderParts = StringSplit ( $sFolder, "\") Local $oFolder = $oNamespace.GetDefaultFolder($sSubFolderParts[1]) Local $fSubFolderExist = False If IsObj($oFolder) = 0 Then Return SetError(2, 0, 0) Local $sFolderName = $oFolder.Name For $iLevel = 2 to $sSubFolderParts[0] $sFolderName &= "\" & $sSubFolderParts[$iLevel] If _OutlookFolderExist($oOutlook, $sFolderName) Then ContinueLoop $fSubFolderExist = False For $oSubFolder in $oFolder.Folders If StringMid($sFolderName,StringInStr($sFolderName,"\",0,-1) + 1) = $oSubFolder.Name Then $fSubFolderExist = True ExitLoop EndIf Next If $fSubFolderExist = True Then $oFolder = $oSubFolder Else $oFolder.Folders.Add($sSubFolderParts[$iLevel]) $oFolder = $oSubFolder EndIf Next If _OutlookFolderExist($oOutlook, $sFolder) = 0 Then Return SetError(3, 0, 0) Return 1 EndFunc ;=============================================================================== ; ; Function Name: _OutlookFolderDelete() ; Description: Delete an Outlook folder ; Syntax.........: _OutlookFolderDelete($oOutlook, $sFolder, $fDeleteSubFolders = False) ; Parameter(s): $oOutlook - Outlook object opened by a preceding call to _OutlookOpen(). ; $sFolder - The Name of the Folder ; $fDeleteSubFolders - Optional: Delete existing subfolder as well, default = False ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Return 1 ; On Failure - Returns 0 and sets @ERROR > 0 ; @ERROR = 1 - Folder doesn't exist. ; @ERROR = 2 - Error when deleting folder. ; @ERROR = 3 - Subfolders found, and $fDeleteSubFolders = False ; @ERROR = 9 - ObjEvent error. ; Author(s): Wooltown ; Created: 2009-03-11 ; Modified: ; ;=============================================================================== Func _OutlookFolderDelete($oOutlook, $sFolder, $fDeleteSubFolders = False) If StringRight($sFolder,1) = "\" Then $sFolder = StringLeft($sFolder,StringLen($sFolder) - 1) If _OutlookFolderExist($oOutlook, $sFolder) = 0 Then Return SetError(1, 0, 0) Local $oOuError = ObjEvent("AutoIt.Error", "_OutlookError") Local $oNamespace = $oOutlook.GetNamespace("MAPI") Local $sSubFolderParts = StringSplit ( $sFolder, "\") Local $oFolder = $oNamespace.GetDefaultFolder($sSubFolderParts[1]) Local $oFolderName If IsObj($oFolder) = 0 Then Return SetError(1, 0, 0) Local $sFolderName = $oFolder.Name For $iLevel = 2 to $sSubFolderParts[0] $sFolderName &= "\" & $sSubFolderParts[$iLevel] If _OutlookFolderExist($oOutlook, $sFolderName) Then ContinueLoop For $oSubFolder in $oFolder.Folders If StringMid($sFolderName,StringInStr($sFolderName,"\",0,-1) + 1) = $oSubFolder.Name Then If $iLevel + 1 = $sSubFolderParts[0] Then For $iIdx = 1 to $oSubFolder.Folders.Count $oFolderName = $oSubFolder.Folders.Item($iIdx) If $oFolderName.Name = $sSubFolderParts[$sSubFolderParts[0]] Then If $oFolderName.Folders.Count > 0 And $fDeleteSubFolders = False Then Return SetError(3, 0, 0) $oSubFolder.Folders.Remove ($iIdx) EndIf Next ExitLoop 2 EndIf $oFolder = $oSubFolder ExitLoop EndIf Next Next If _OutlookFolderExist($oOutlook, $sFolder) = 1 Then Return SetError(2, 0, 0) Return 1 EndFunc ;=============================================================================== ; ; Function Name: _OutlookFindRootFolder() ; Description: Find the Mail Root folder ; Syntax.........: _OutlookFindRootFolder(ByRef $oFolder, Byref $sRootFolderName, $sFolder) ; Parameter(s): $oFolder - The Folder Object ; $sRootFolderName - The name of the Root Folder ; $sFolder - The Folder to search for ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): Return 1 if folder is found, otherwise 0 ; Author(s): Wooltown ; Created: 2009-02-26 ; Modified: 2009-03-11 - Return 1 if folder is found, otherwise 0 ; ;=============================================================================== Func _OutlookFindRootFolder(ByRef $oFolder, Byref $sRootFolderName, $sFolder) Local $sSubFolder = "", $iReturnValue = 0 If StringInStr($sFolder,"\") > 0 Then $sSubFolder = StringMid($sFolder,StringInStr($sFolder,"\") + 1) $sFolder = StringLeft($sFolder,StringInStr($sFolder,"\") - 1) EndIf For $oSubFolder in $oFolder.Folders If $sFolder = $oSubFolder.Name Then $sRootFolderName &= "\" & $oSubFolder.Name $oFolder = $oSubFolder If $sSubFolder <> "" Then $iReturnValue = _OutlookFindRootFolder($oFolder, $sRootFolderName, $sSubFolder) Else $iReturnValue = 1 EndIf Return $iReturnValue EndIf Next Return $iReturnValue EndFunc ;=============================================================================== ; ; Function Name: _OutlookFindMailInTree() ; Description: Find all Mail in tree structure ; Syntax.........: _OutlookFindMailInTree(ByRef $asMail, $oFolder, $sFolderName, $fSubFolders, $sFrom, $sTo, $sCc, $sBCc, $sSubject, $iImportance, $fOnlyReturnUnread, $iSetStatus, $fCountMailOnly = False) ; Parameter(s): $asMail - Array with all mails ; Parameter(s): $oFolder - The Folder Object ; $sFolderName - The Folder to search for mail in ; $fSubFolders - Will Subfolders be searched ? ; $sFrom - The e-mail address of the sender ; $sTo - The recipiant(s) ; $sCc - The CC recipiant(s) of the mail ; $sBCc - The BCC recipiant(s) of the mail ; $sSubject - The Subject of the mail ; $iImportance - The Importance of the mail ; $fOnlyReturnUnread - Return all mail - False, only unread - True ; $iSetStatus - 0 - Don't change status ; 1 - Set as Read ; 2 - Set as UnRead ; 3 - Change status Read > Unread, Unread > Read ; $fCountMailOnly - False - Report all ; True - Report only number of items ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): On Success - Array in the following format: [10000][16] ; [0][0] - Total Number of items ; [0][1] - Number of unread items ; [1][0] - Sender name ; [1][1] - Sender Email address ; [1][2] - To ; [1][3] - Cc ; [1][4] - Bcc ; [1][5] - ReceivedTime ; [1][6] - SentOn ; [1][7] - Subject ; [1][8] - Folder ; [1][9] - Body ; [1][10] - BodyFormat ; [1][11] - Importance ; [1][12] - Unread ; [1][13] - Size ; [1][14] - FlagIcon ; [1][15] - Attachments ; [1][16] - Class ; [n][n] - Item n ; Author(s): Wooltown ; Created: 2009-02-26 ; Modified: 2009-03-02 ; ;=============================================================================== Func _OutlookFindMailInTree(ByRef $asMail, $oFolder, $sFolderName, $fSubFolders, $sFrom, $sTo, $sCc, $sBCc, $sSubject, $iImportance, $fOnlyReturnUnread, $iSetStatus, $fCountMailOnly) If $fSubFolders = True Then For $oSubFolder in $oFolder.Folders _OutlookFindMailInTree($asMail, $oSubFolder, $sFolderName & "\" & $oSubFolder.Name, $fSubFolders, $sFrom, $sTo, $sCc, $sBCc, $sSubject, $iImportance, $fOnlyReturnUnread, $iSetStatus, $fCountMailOnly) Next EndIf Local $oFileName, $iMail = $asMail[0][0] Local $oItems = $oFolder.Items $asMail[0][0] += $oItems.Count $asMail[0][1] += $oFolder.UnReadItemCount If $asMail[0][0] >= 9999 Then SetError (4) Return $asMail EndIf If $fCountMailOnly = False Then For $oMessage In $oFolder.Items $iMail += 1 $iAttachCnt = $oMessage.Attachments.Count $asMail[$iMail][0] = $oMessage.SenderName $asMail[$iMail][1] = $oMessage.SenderEmailAddress $asMail[$iMail][2] = $oMessage.To $asMail[$iMail][3] = $oMessage.Cc $asMail[$iMail][4] = $oMessage.Bcc $asMail[$iMail][5] = $oMessage.ReceivedTime $asMail[$iMail][6] = $oMessage.SentOn $asMail[$iMail][7] = $oMessage.Subject $asMail[$iMail][8] = $sFolderName $asMail[$iMail][9] = $oMessage.Body $asMail[$iMail][10] = $oMessage.BodyFormat $asMail[$iMail][11] = $oMessage.Importance $asMail[$iMail][12] = $oMessage.UnRead $asMail[$iMail][13] = $oMessage.Size $asMail[$iMail][14] = $oMessage.FlagIcon $iAttachCnt = $oMessage.Attachments.Count If $iAttachCnt > 0 Then For $iCtr = 1 To $iAttachCnt If $iCtr = 1 Then $oFileName = $oMessage.Attachments.Item($iCtr) ;$asMail[$iMail][15] &= $oMessage.Attachments.Item($iCtr).FileName $asMail[$iMail][15] &= $oFileName.FileName Else $oFileName = $oMessage.Attachments.Item($iCtr) ;$asMail[$iMail][15] &= ";" & $oMessage.Attachments.Item($iCtr).FileName $asMail[$iMail][15] &= ";" & $oFileName.FileName EndIf Next EndIf $asMail[$iMail][16] = $oMessage.Class If $fOnlyReturnUnread = True Then If $asMail[$iMail][12] = False Then $iMail -= 1 ContinueLoop EndIf EndIf If Not ($sFrom = "" And $sTo = "" And $sCc = "" And $sBCc = "" And $sSubject = "" And $iImportance = "") Then If $sFrom <> "" Then If StringInStr($asMail[$iMail][0],$sFrom) = 0 Then $iMail -= 1 ContinueLoop EndIf EndIf If $sTo <> "" Then If StringInStr($asMail[$iMail][2],$sTo) = 0 Then $iMail -= 1 ContinueLoop EndIf EndIf If $sCc <> "" Then If StringInStr($asMail[$iMail][3],$sCc) = 0 Then $iMail -= 1 ContinueLoop EndIf EndIf If $sBcc <> "" Then If StringInStr($asMail[$iMail][4],$sBcc) = 0 Then $iMail -= 1 ContinueLoop EndIf EndIf If $sSubject <> "" Then If StringInStr($asMail[$iMail][7],$sSubject) = 0 Then $iMail -= 1 ContinueLoop EndIf EndIf If $iImportance <> "" Then If StringInStr($asMail[$iMail][11],$iImportance) = 0 Then $iMail -= 1 ContinueLoop EndIf EndIf EndIf Switch $iSetStatus Case 1 $oMessage.UnRead = False Case 2 $oMessage.UnRead = True Case 3 If $oMessage.UnRead = False Then $oMessage.UnRead = True Else $oMessage.UnRead = False EndIf EndSwitch Next EndIf EndFunc ;=============================================================================== ; ; Function Name: _OutlookError() ; Description: Called if an ObjEvent error occurs ; Requirement(s): AutoIt3 with COM support (post 3.1.1) ; Return Value(s): 9 ; Author(s): Wooltown ; Created: 2009-02-09 ; Modified: - ; ;=============================================================================== Func _OutlookError() Return SetError(9, 0, 0) EndFunc