first push of my config files
[my-dotfiles.git] / bin / executors / mail-check
CommitLineData
fdd76fc5 1#!/usr/bin/env python3
2
3"""
4A very simple imap e-mail notifier.
5Tested (and working) with Debian 8 (Jessie) + Xfce.
6"""
7
8import imaplib
9import re
10import time
11import sys
12import os
13import argparse
14
15
16def MainProgram():
17 server_error = 0
18 status = ""
19 unread = 0
20
21 parser = argparse.ArgumentParser(description='Check your email.')
22 parser.add_argument("-g", "--gmail", help="connect to gmail imap server", action="store_true")
23 parser.add_argument("-c", "--custom", help="connect to custom imap server", type=str, default=argparse.SUPPRESS)
24 parser.add_argument("-u", "--user", help="Username", type=str, required=True)
25 parser.add_argument("-p", "--pword", help="Password", type=str, required=True)
26 parser.add_argument("-r", "--port", help="Port to connect to", default="993", type=int)
27 parser.add_argument("-d", "--display", help="Display Name", type=str)
28
29 args = parser.parse_args()
30
31 if args.gmail:
32 imapServer = "imap.gmail.com"
33 else:
34 if args.custom:
35 imapServer = args.custom
36
37 if args.display:
38 displayName = args.display
39 else:
40 displayName = imapUserName
41
42 try:
43 imapUserName = args.user
44 except Exception as e:
45 raise
46
47 try:
48 imapPass = args.pword
49 except Exception as e:
50 raise
51
52 try:
53 imapPort = args.port
54 except Exception as e:
55 raise
56
57
58 # # Enter your imap settings below
59 # imapServer = "imap.gmail.com"
60 # # imapUserName = "danixland@gmail.com"
61 # imapUserName = "it.danilo.macri@gmail.com"
62 # # imapPass = "jxibrnebktqbkhmx"
63 # imapPass = "udykutvueszpxfkd"
64 # imapPort = 993
65 # # displayName = "gmail - danixland"
66 # displayName = "gmail - Danilo Macri"
67
68 # Try to connect to imap server
69 try:
70 server = imaplib.IMAP4_SSL(imapServer, imapPort)
71 server.login(imapUserName, imapPass)
72 status, unread = server.status('INBOX', "(UNSEEN)")
73 except Exception:
74 pass
75
76 if status != "OK":
77 server_error = 1
78
79 # Retry a couple of times even though we got wrong response from server
80 while server_error >= 1 and server_error < 4:
81 time.sleep(2)
82 if status == "OK":
83 server_error = 0
84 else:
85 server_error += 1
86 MainProgram() # Try to connect again
87
88 CHECK_UNREAD = str(unread)
89 NO_OF_UNREAD = re.sub(r'\D', "", CHECK_UNREAD)
90
91 if server_error > 3:
92 # os.system('notify-send "Problem connecting to imap server"')
93 print("Problem connecting to imap server")
94 elif int(NO_OF_UNREAD) > 0:
95 # os.system('notify-send "You have new mail"')
96 print("/usr/share/icons/MB-Mango-Suru-GLOW/panel/16/new-messages-red.svg")
97 print("{}: {} new mail".format(displayName, NO_OF_UNREAD))
98 elif int(NO_OF_UNREAD) == 0:
99 print("/usr/share/icons/MB-Mango-Suru-GLOW/panel/16/applications-email-panel.svg")
100 print("{}: No new mail".format(displayName))
101
102
103MainProgram()