The error 0x80040111 is MAPI_E_LOGON_FAILED I don't quite understand how you are getting this error because we are only using logon to init MAPI not to do anything. Logon returns undef regardless of success or failure. Did you add/change some code? That is a Win32::OLE::LastError() message and the only times I call that I call it with die so you should only get one :-) You don't actually say if the output works. The logon is somewhat notional as we were just using it to init MAPI. If returns undef regardless. I have some updated code that tries a more formal login. It may help. I did manage to reproduce a version of your error when I had login code in the two subs that call MAPI when the first one called logon like this: MAPI->Logon( {'ProfileInfo' => "blah"}, undef ) and the second one called it without the undef. This was documented in what looks like a bug workaround. I now just do a single MAPI login at the start and init MAPI after Outlook in case that helps. This new code still works fine for me. MAPI is a pain. It used to work but Microsoft broke it badly in 2002 with Outlook SR 2 because of all the trojan problems they were having. Although I simply avoided using it for most of the code (accessing data through the Outlook interface) the Outlook interface does not expose certain details of the object model - particularly the Fields method. You can see in the code where we use fields to get the header and other details to fake a header (for example sent mail does not have a real header because it was never "sent" through a mailer (at least on the storage side) There is a note about this error here: http://www.ureader.com/message/252072.aspx and another here http://www.querycat.com/faq/3d7ee57b7b443939d913ff34d5047edf As you will note we were not passing any logon details. This worked for me as it defaults to Outlook. If you had a session that was talking to exchange I might well try a null logon to there. Another possibility is that you have another logon session running on the machine you are using. This appears to break things. Having Outlook open seems to have helped in one instance although it runs fine for me here with Outlook closed. Outlook on some systems leaves instances running so a quick 3 finger salute [ctr]+[alt]+[del] | Processes | Select all Outlook processes and and kill them with End Process.