Есть ли новая почта?
Mac OS X + growl + pop3 | imap | gmail уведомление о новой почте

Для тех, у кого есть несколько почтовых ящиков (pop3, imap, gmail) и кто смотрит или получает почту через web, я написал простенькую прогу на python.
Все это работает на Mac OS X, но немного изменив можно приспособить и для Linux и для Widows
Для уведомления пользователя используем growlnotify из growl
Сама программа (growlnotify = “/usr/local/bin/growlnotify” нужно изменить на реальное размещение growlnotify):
#!/usr/bin/env python
# -*- coding: utf-8 -*-
config = [["pop3", "server1", "username1", "password1"],
["imap_ssl", "server2", "username2", "password2"],
]
growlnotify = "/usr/local/bin/growlnotify"
def growlNotify(mailCount, mailBox):
message = growlnotify + " -m \"You have a " + str(mailCount) + " new mail\" -a Mail \"" + mailBox +"\""
try:
import os
os.system(message)
except:
print "error: notify"
def main():
for mailBox in config:
if mailBox[0] == "pop3":
import poplib
try:
pop = poplib.POP3(mailBox[1])
try:
pop.apop(mailBox[2], mailBox[3])
stat = pop.stat()
if stat[0] != 0:
growlNotify(stat[0], mailBox[1])
except:
print "error: server", mailBox[1], "authorization"
pop.quit()
except:
print "error: server", mailBox[1], "not response"
elif mailBox[0] == "imap_ssl":
import imaplib
try:
imap = imaplib.IMAP4_SSL(mailBox[1])
try:
imap.login(mailBox[2], mailBox[3])
stat = imap.select()
if stat[1][0] != '0':
growlNotify(stat[1][0], mailBox[1])
imap.close()
except:
print "error: server", mailBox[1], "authorization"
imap.logout()
except:
print "error: server", mailBox[1], "not response"
if __name__ == "__main__":
main()
При запуске руками программа проверяет наличие новой почты в указанных ящиках и выдает уведомление на экран с помощью growlnotify.
На Mac OS X сделал периодический запуск с помощью launchd. Вот пример описания задачи для launchctl, который нужно положить в ~/Library/LaunchAgents. Имя файла ua.dp.vovaz04h.pyNewMailCheck.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>ua.dp.vovaz04h.pyNewMailCheck</string>
<key>ProgramArguments</key>
<array>
<string>python</string>
<string>/Volumes/MacRaid/Dropbox/pyNewMailCheck/pyNewMailCheck.py</string>
</array>
<key>StartInterval</key>
<integer>600</integer>
<key>LimitLoadToSessionType</key>
<string>Aqua</string>
<key>LowPriorityIO</key>
<true/>
<key>Nice</key>
<integer>10</integer>
</dict>
</plist>
/Volumes/MacRaid/Dropbox/pyNewMailCheck/pyNewMailCheck.py замените на путь и название для основной программы. Интервал запуска 600 секунд или 10 минут.
На идеал я не претендую, но возможно кому-то понадобится. Пишите замечания.
Comments
Comment form for «Есть ли новая почта?»