[Eug-lug] IMAP mail monitor script
Dave Compton
to.dave.c at gmail.com
Fri Jul 4 12:02:58 PDT 2008
Here's a little python script that I wrote to monitor my IMAP mail
inbox. It works by checking periodically to see if any new unread
messages have appeared. I use upstart on an Ubuntu 8.04 server to keep
it running all the time.
In my case, I'm using the script to pass the new e-mail on to myself as
a cell phone text message.
The script is pasted in below and also in github:
git://github.com/dc25/imaptomsg.git
- Dave
> #! /usr/bin/python
> import imaplib, time
> import os
> from tempfile import NamedTemporaryFile
>
> msgEmail = "" # text message email address here.
> loginName = "" # imap login name ; gmail uses id at gmail.com
> loginPassword = "" # imap password
>
> def textMessage(msg):
> filehandle = NamedTemporaryFile()
> filehandle.write(msg)
> filehandle.flush()
> systemCmd = "mutt " + msgEmail + " > /dev/null 2>&1 < " + filehandle.name
> os.system(systemCmd)
> filehandle.close()
>
>
> imap = imaplib.IMAP4_SSL('imap.gmail.com', 993)
> imap.login(loginName, loginPassword)
> imap.select()
> typ, msgnums = imap.search(None, 'UNSEEN')
> unseen0 = set(msgnums[0].split())
> while 1:
> time.sleep(20)
> imap.select()
> typ, msgnums = imap.search(None, 'UNSEEN')
> unseen1 = set(msgnums[0].split())
> for n in unseen1 - unseen0:
> t, hdr_from = imap.fetch(n, '(BODY.PEEK[HEADER.FIELDS (FROM)])')
> t, hdr_subject = imap.fetch(n, '(BODY.PEEK[HEADER.FIELDS (SUBJECT)])')
> t, text = imap.fetch(n, '(BODY.PEEK[TEXT])')
> textMessage( hdr_from[0][1] + hdr_subject[0][1] + text[0][1])
> unseen0 = unseen1
>
> imap.close()
> imap.logout()
~
More information about the EUGLUG
mailing list