Python MAPI

vasudevram vasudevram at gmail.com
Fri Jul 20 21:38:34 CEST 2007


On Jul 21, 12:28 am, kyoso... at gmail.com wrote:
> On Jul 20, 1:48 pm, vasudevram <vasudev... at gmail.com> wrote:
>
>
>
>
>
> > On Jul 20, 10:57 pm, kyoso... at gmail.com wrote:
>
> > > Hi,
>
> > > I've been googling all over and can't find any good answers about this
> > > problem. I would like to create some kind of MAPI interface with
> > > Python such that when I open Microsoft Word (or another Office
> > > program) and click File, Send To, Mail Recipient it opens a program I
> > > wrote in Python and uses it to send the email rather than Outlook.
>
> > > The closest I've come is finding the registry key HKLM\Software\Clients
> > > \Mail which seems to control the default email client. I did figure
> > > out how to redirect mailto directives on websites to my program
> > > successfully, but this is a whole 'nother ballgame.
>
> > > Any suggestions are welcome. I am considering writing some VBA hooks
> > > in Office Apps in question, but would prefer to avoid that.
>
> > > Thanks!
>
> > > Mike
>
> > > P.S. Currently using Python 2.4, wxPython 2.8.3 (for GUI) on Windows
> > > XP Pro.
>
> > Hi,
>
> > 1: I don't know much about Windows APIs, but am currently reading the
> > "Windows Internals" book. Got this idea from it:
>
> > Go tohttp://www.microsoft.com/technet/sysinternals/default.mspx
> > and check out the SysInternals utilities there. The book says that you
> > can use some of them to "spy" on what an app is doing - what registry
> > keys it is reading/writing, lots of other OS-level calls it makes as
> > it runs. Digging around and using some of these utilities to check out
> > what an Office app does when you use it to send mail, might help you
> > figure out a way to do what you want.
>
> > 2. Try looking for registry entries specific to Office Apps, and look
> > under those subtrees for likely email-related entries to modify (if
> > you haven't tried that already). I guess you already know that
> > fiddling with the registry can be risky and can crash your system, so
> > take backups, etc.
>
> > Using COM via Python may also help - again, some digging required. You
> > probably already have the PyWin32 Python extensions for Windows COM
> > (earlier called win32all - seehttp://wiki.python.org/moin/Win32All) -
> > if not, its available here:
>
> >http://www.python.org/download/releases/2.4.4/
> > (scroll down the page for the link)
>
> > Vasudev Ramwww.dancingbison.com
> > jugad.livejournal.com
> > sourceforge.net/projects/xtopdf
>
> Thanks for the ideas...I am already monitoring the registry to see
> what happens when I switch between two email clients. In this case, I
> am switching between Outlook 2003 and Thunderbird 2. The pertinent
> registry files are as follows:
>
> # changes which email client to use
> [HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail]
>
> # obviously changes the .eml file association
> [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.eml]
>
> # haven't the fogiest idea what this does, if anything
> [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{29F458BE-8866-11D5-
> A3DD-00B0D0F3BAA7}]
>
> # change mailto functionality
> [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mailto\DefaultIcon]
> @="C:\\Program Files\\Mozilla Thunderbird\\thunderbird.exe,0"
> [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mailto\shell\open\command]
> @="\"C:\\Program Files\\Mozilla Thunderbird\\thunderbird.exe\" -osint -
> compose \"%1\""
>
> I assume you're referring to "Process Monitor", which is a really cool
> tool. Maybe it'll help, but I usually can't get it to filter out
> enough of the noise to make the output useful. I'll give it a go
> nonethless.
>
> I am running all my tests in a VM, so I really don't care if the
> registry gets hosed at this point.
>
> Thanks again,
>
> Mike- Hide quoted text -
>
> - Show quoted text -

You're welcome :)

If Process Monitor has an option to save its output as text files /
CSV files (some of the other SysInternals tools do), you might want to
try using (a Windows version) of grep or awk to filter out the
noise ..

Vasudev





More information about the Python-list mailing list