# AutoIt tools to export MS Outlook OST mailbox to PST?

## Recommended Posts

Hi all.  Does AutoIt have any functions/tools (either built-in or user defined) that can help me automate the process of exporting an OST mailbox to a PST file in Microsoft Outlook (2013)?

I know how to carry out the process manually.  At the Microsoft Forums, I have asked if it is possible to do the same via a script, but some have said it is not possible.  It may be possible if I was using Microsoft Exchange, but I am not.

I've seen some posts about an Outlook UDF on this site (here and here), but I don't see any mention of exporting a mailbox.

In my post at the Microsoft Forums, many paid third party applications were suggested.  But for now I would like to pursue the custom scripting route as far as I can.

The ultimate goal of this exercise is to automatically create a weekly backup of my Outlook mailbox for offline storage.

##### Share on other sites

You could write one yourself fairly easily. All it would take would be a bunch of ControlClicks and other control navigation. There only seems to be around 8-10 steps to doing it manually so I would just create a script that does each step automatically for you.

UHJvZmVzc2lvbmFsIENvbXB1dGVyZXI=

##### Share on other sites

@anthonyjr2 yep I know.  I should have mentioned that my backup plan is a more brute force method in the manner that you described.  I was just wondering if some more elegant tools already existed.  It looks like they don't, which is OK--this is one of the reasons AutoIt exists :-)

##### Share on other sites
11 minutes ago, cag8f said:

@anthonyjr2 yep I know.  I should have mentioned that my backup plan is a more brute force method in the manner that you described.  I was just wondering if some more elegant tools already existed.  It looks like they don't, which is OK--this is one of the reasons AutoIt exists :-)

Hello sir.  If you are looking for a simple method for doing what you are describing, I would check out This page and this one.

##### Share on other sites

@MattHiggs  Those look promising, thanks very much.  Do you use either, or have you used either in the past?

## Create an account

Register a new account

• ### Similar Content

• By Gowrisankar
Dear members,
I'm trying to get the attachments from mails using OutlookEx UDF and then save them in a particular location.
The UDF considers even the signature images and other images in the mail body as attachments, and saves it in the folder I point. I want only the proper attachment documents to be saved.
Requesting the guidance of the forum members.

Thanks and regards,
Gowrisankar R.
• By Gowrisankar
Dear members,
I'm trying to move unread mails from Inbox to a different folder using OutlookEx UDF.
But its not working for me. I'm not sure what mistake I do.
I get the error code 6 when the following is executed. From the UDF it is observed that  "No or an invalid item has been specified".
Note : The UDF version is 1.3.3.1. AutoIt version (v3.3.14.2).
#include <OutlookEX.au3> Global $oOutlook = _OL_Open() If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF", "Error creating a connection to Outlook. @error = " & @error & ", @extended = " & @extended) Global$aOL_Item = _OL_ItemFind($oOutlook, "*\Inbox",$olMail, "[UnRead]=True", "", "", "Subject", "", 1) If $aOL_Item[0][0] = 0 Then Exit MsgBox(16, "OutlookEX UDF: _OL_ItemMove Example Script", "Could not find a task item in folder 'Outlook-UDF-Test\SourceFolder\Tasks'. @error = " & @error) _ArrayDisplay($aOL_Item, "OutlookEX UDF: _OL_ItemFind Example Script - Unread mails") _OL_ItemMove($oOutlook,$aOL_Item[1][0], Default, "*\Outlook-UDF-Test\TargetFolder\Mail") If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF: _OL_ItemMove Example Script", "Error moving specified task. @error = " & @error) Any help is deeply appreciated. Thanks in advance.
Thanks and regards,
Gowrisankar R.
• By water
Extensive library to control and manipulate Microsoft Outlook.
Theads: Development - General Help & Support - Example Scripts - Wiki
BTW: If you like this UDF please click the "I like this" button. This tells me where to next put my development effort

KNOWN BUGS (last changed: 2018-01-26)
Function _OL_RuleConditionSet does not properly handle parameter rule condition type ($iRuleConditionType) when value$olConditionSentTo is passed. it is being processed the same way as $olConditionFrom. Thanks to user Moonscarlet for reporting this bug. Fixed with version 1.3.3.1 of the UDF. • By zetaimmersion Hi all. I am trying to do 2 things but i cannot seem to get any traction on how to read/implement this idea. Premise: PowerPoint file in C\temp\presentation.pptx that contains on the first slide 2 entries as "<one>" and "<two>" which need to be replaced with "user1" and "user2", then a silent Outlook send mail containing the file with a predefined body and subject. I narrowed it down to COM objects as the Office does not like intrusive open AutoIt functions. I installed OLE/COM Object Viewer to understand how to create the commands but i am still stuck. So far i am trying to user water's code but i suck COM object i was originally trying to modify Dim$oPPT, $oPres$oPPT = ObjCreate("PowerPoint.Application") $oPPT.Visible = True$oPres = $oPPT.Presentations.Read Water's code below (0.1% modified) #include <File.au3> #include "PowerPoint.au3" #include <misc.au3> Global$sFile = "C:\temp\presentation.pptx" Global $sString2Search = "<username>",$sString2Replace = "Password", $iReplaceOnce = 1,$sFullLogFile = "C:\temp\pptxlog.txt" _ProcessPpt($sFile) Func _ProcessPpt($sFile) $oApp = _PPT_PowerPointApp() Local$bChange = False Local $oInterface =$oApp.Presentations Local $oPresentation =$oInterface.Open($sFile, False, False, False) If @error Then _FileWriteLog($sFullLogFile, "E Error " & @error & " opening File " & $sFile) Return SetError(1, 0, 0) EndIf ;it does not even open my file and from here not sure how to read the text and replace it EndFunc ;==>_ProcessPpt • By Smigacznr1 I'm writing Outlook pst cleaner and now I'm stuck. Compiled script is crashing with OS crash message. When I tryied to run script from editor it's exiting itself (mabye it's some type of crash?) always when it's processing on 4-rd pst file. Here is my code: #include <OutlookEX.au3> #include <Date.au3> #include <File.au3> #include <Array.au3> _cleanOutlook("Administrator") _cleanOutlook("Admin") Exit Func _cleanOutlook($user) $foldery = "Wiadomości-śmieci#?SPAM#?Junk E-mail#?Elementy usunięte#?Deleted Items"$tab_folderow = StringSplit($foldery, "#?", 1)$tab_pst = _FileListToArrayRec("c:\users\" & $user, "*.pst", 1+4+8, 1, 0, 2) ;~ _ArrayDisplay($tab_pst) For $d = 1 To UBound($tab_pst) -1 Step +1 $outlook = _OL_Open(True) _OL_Close($outlook, True) $outlook = _OL_Open() Local$aStores = _OL_StoreGet($outlook) ;~ _ArrayDisplay($aStores) For $i = 1 to$aStores[0][0] If $aStores[$i][4] = True Then ;~ ConsoleWrite(@CRLF & "zamykam pst 2") _OL_PSTClose($outlook,$aStores[$i][0]) EndIf Next ;~ _OL_PSTAccess($outlook, "C:\Users\Administrator\Desktop\cos.pst") _OL_PSTAccess($outlook,$tab_pst[$d]) ConsoleWrite(@CRLF &$tab_pst[$d]) ;~$tab_struktury = _OL_FolderTree($outlook, "*", 10) ;~ If @error Then ;~ ContinueLoop ;~ EndIf ;~ _ArrayDisplay($tab_struktury) $tab_ktory_pst = _OL_PSTGet($outlook) ;~ _ArrayDisplay($tab_ktory_pst) For$a = 0 To UBound($tab_ktory_pst) -1 Step +1 If$tab_ktory_pst[$a][2] =$tab_pst[$d] Then ;~ MsgBox(0, "",$tab_ktory_pst[$a][0])$nazwa_bazy_pst = $tab_ktory_pst[$a][0] EndIf Next ;~ MsgBox(0, "", UBound($tab_folderow)) ;~ _ArrayDisplay($tab_folderow, $tab_pst[$d]) ConsoleWrite(@CRLF & "przed while") $a = 0 While$a < 2 ConsoleWrite(@CRLF & "while 1") For $b = 1 To UBound($tab_folderow) -1 Step +1 ConsoleWrite(@CRLF & "for 1") $tab_struktury = _OL_FolderTree($outlook, $nazwa_bazy_pst) ;~ _ArrayDisplay($tab_struktury, $nazwa_bazy_pst) ;~$folder = _OL_FolderAccess($outlook, StringTrimLeft($tab_struktury[0], 2) & "\" & $tab_folderow[$b]) $folder = _OL_FolderAccess($outlook, $nazwa_bazy_pst & "\" &$tab_folderow[$b]) ;~ ConsoleWrite(@CRLF & "eeee") If @error Then ;~ MsgBox(0, "", "\\" &$nazwa_bazy_pst & "\" & $tab_folderow[$b] & @CRLF & @error) ConsoleWrite(@CRLF & "przechodze do kolejnego " & $b+1) ContinueLoop EndIf ;~ _ArrayDisplay($folder, $nazwa_bazy_pst) ConsoleWrite(@CRLF &$tab_folderow[$b]) If$tab_folderow[$b] = "Deleted Items" Or$tab_folderow[$b] = "Elementy usunięte" Then ConsoleWrite(@CRLF & "usuwam kosze") _OL_FolderDelete($outlook, $folder[1], 1) _OL_FolderDelete($outlook, $folder[1], 2) _OL_FolderDelete($outlook, $folder[1], 3) _OL_FolderDelete($outlook, $folder[1], 4) ;~ _OL_FolderDelete($outlook, $folder[1], 5) EndIf If$a = 0 Then $tab_maile = ""$data_dzis = @YEAR & "/" & @MON & "/" & @MDAY & " 00:00" ;~ $data_dzis = "2017/01/31 00:00"$data_szukana = _DateAdd("D", "-3", $data_dzis)$tab_maile = _OL_ItemFind($outlook,$folder[1], $olMail, "[Received]<'" & StringReplace($data_szukana, "/", "-") & "'", "", "", "EntryID", "", 1) If @error Then ContinueLoop EndIf ;~ If UBound($tab_maile) > 1 Then ;~ _ArrayDisplay($tab_maile) ;~ EndIf If UBound($tab_maile) > 1 Then For$c = 1 To UBound($tab_maile) -1 Step +1 ;~ ConsoleWrite(@CRLF & "usuwam stare maile") _OL_ItemDelete($outlook, $tab_maile[$c][0], "", False) Next EndIf EndIf Next $a =$a + 1 WEnd ;~ ConsoleWrite(@CRLF & "pokazuje") ;~ $folder[1].Display$olFolderInbox.Display ;~ _OL_PSTClose($outlook,$olFolderInbox) ;~ If @error Then ;~ MsgBox(0, "", @error) ;~ EndIf Local $aStores = _OL_StoreGet($outlook) ;~ _ArrayDisplay($aStores) For$i = 1 to $aStores[0][0] If$aStores[$i][4] = True Then ;~ ConsoleWrite(@CRLF & "zamykam pst 1") _OL_PSTClose($outlook,$aStores[$i][0]) EndIf Next ;_OL_PSTClose($outlook,$folder[1]) _OL_Close(\$outlook, True) If @error Then MsgBox(0, "", @error) EndIf ConsoleWrite(@CRLF & "zamykam") ProcessWaitClose("outlook.exe", 30) ProcessClose("outlook.exe") Next EndFunc
Outlook and OS is updated. I'm usinn OutlooEX in ver. 1.3.1.0
Any ideas?

×

• Wiki

• Back

• Git