Проверка новой почты на GMail

В меру своих возможностей я стараюсь не пользоваться лишними программами. Все эти громоздкие почтовые монстры на компьютере… Они скорее замедляют и ограничивают, чем помогают. Но это при условии постоянного доступа к инетернету. Для меня это справедливо. Так вот вся моя почта храниться, как наверное и у многих, на GMail.com. Это удобно, всегда и везде доступно и т.д. и т.д. Но столкнулся с неудобством: держать постоянно открытым окно браузера с почтой не удобно. Тем более, что у меня несколько различных ящиков: рабочий, личный, мусорный… Поэтому потребовался способ регулярной автоматической проверки почты с сообщением пользователю (т.е. мне) о новых письмах. Т.к. при переходе на Gnome 3 как-то сразу ничего готового не подвернулось, то решил оправдать высокое звание программиста и написать свой скриптик для этой цели.

Итак, что нам понадобиться. Почтовый ящик на GMail, конечно. С доступом по IMAP. И две библиотеки для Pyhton: PyGmail и PyNotify. Первая служит для общения с GMail по средствам протокола IMAP, а вторая - для показа сообщений в Gnome.

В итоге получилось:

#!/usr/bin/env python
#-*- coding:utf-8 -*-
import sys
import pynotify
from pygmail import PyGmail

MAILBOXES = (("account1@gmail.com", "password1"),
             ("account2@gmail.com", "password2"))

if not pynotify.init("Gmail Checker"):
    print "Error initialize notification service"
    sys.exit(1)
for login, password in MAILBOXES:
    gmail = PyGmail()
    if "OK" != gmail.login(login, password):
        print "Error login into [%s]" % login
        continue
    gmail.get_mailboxes()
    total_count = gmail.get_mail_count()
    unread_count = gmail.get_unread_count()
    print "[%s] has %s/%s mails" % (login, unread_count, total_count)
    if int(unread_count) > 0:
        n = pynotify.Notification(login, "[%s] has %s unread mails" %
                                  (login, unread_count))
        if not n.show():
            print "Error show notification"
    try:
        gmail.logout()
    except:
        pass

Все просто как 2 копейки. Делаем файл исполняемым и запускаем:

/home/stalker/bin/gmail_check.py

Теперь осталось прописать это в crontab и наслаждаться. Ан нет !!! Не все так радостно оказывается. При запуске из crontab’a нужно указать на каком X сервере отображать сообщения. Поэтому строка запуска чуть усложниться:

*/5 * * * * export DISPLAY=":0"; /home/stalker/bin/gmail_check.py > /dev/null 2>&1
 
comments powered by Disqus