Quantcast
Channel: Programming Forums
Viewing all articles
Browse latest Browse all 51036

daemon to check gmail for new mail

$
0
0
hello community of dreamincode, ive decided to write a python script to check my gmail account for new mail, its made of various pieces of code obtained from the interwebs:
#!/usr/bin/python -O
 
import daemon
import time
import os
import signal
import sys
import imaplib
 
class GmailCheckDaemon(daemon.DaemonContext):
    def __init__(self):
        super(GmailCheckDaemon, self).__init__()
        self.signal_map[signal.SIGTERM] = self.sigtermHandler
        self.stdout = open('/home/lapb/programs/gmailCheckDaemonStdOut.log', 'wb')
        self.stderr = open('/home/lapb/programs/gmailCheckDaemonStdErr.log', 'wb')
        self.mail = imaplib.IMAP4_SSL('imap.gmail.com','993')
        self.mail.login('myaddress@gmail.com','mypassword')
        self.mail.select()
    
    def run(self):
        with self:
            unreads = len(self.mail.search(None, 'UnSeen')[1][0].split())
            if unreads > 0:
                popup = 'kdialog --title "New mail" --passivepopup "there are' + str(unreads) + 'unread emails" 1'
                os.system(popup)
            while True:
                oldunreads = unreads
                unreads = len(self.mail.search(None, 'UnSeen')[1][0].split())
                count = unreads - oldunreads
                if count > 0:
                    popup = 'kdialog --title "New mail" --passivepopup "there are' + str(count) + 'unread emails" 1'
                    os.system(popup)
                time.sleep(60)
    
    def sigtermHandler(self, *args):
        self.mail.close()
        self.mail.logout()
        sys.exit(0)
 
 
if __name__ == '__main__':
    daemon = GmailCheckDaemon()
    daemon.run()



and i get the following output in the stderr file:

Traceback (most recent call last):
  File "/home/lapb/programs/checkgmail.py", line 43, in <module>
    daemon.run()
  File "/home/lapb/programs/checkgmail.py", line 22, in run
    unreads = len(self.mail.search(None, 'UnSeen')[1][0].split())
  File "/usr/lib/python2.7/imaplib.py", line 627, in search
    typ, dat = self._simple_command(name, *criteria)
  File "/usr/lib/python2.7/imaplib.py", line 1070, in _simple_command
    return self._command_complete(name, self._command(name, *args))
  File "/usr/lib/python2.7/imaplib.py", line 859, in _command
    raise self.abort('socket error: %s' % val)
imaplib.abort: socket error: [Errno 9] Bad file descriptor



sadly googleing for "python IMAP4.search "Bad file descriptor"" hasnt returned anything helpfull
thanks for any help

Viewing all articles
Browse latest Browse all 51036

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>