вторник, 12 июня 2012 г.

Новости на мобильник или управление с e-mail. Часть третья.

Итак, функция отправки сообщений с мыла была приведена в постах ниже, поэтому смысла ее выкладывать нет. Осталось написать функцию, которая будет читать письма, находить в них команды (под командами я понимаю любую строку, которая начинается с "/", под исполняемой командой - любую строку из перечисленных в первой части.) и отправлять все эти команды на исполнение. Также я вижу смысл прокомментить некоторые строки данной функции:
def returnCommand():
    server = "pop.yandex.ru" #укажим сервер яндекса(там почта)
    port = "110"
    login = "___"
    password = "____"
    box = poplib.POP3(server, port)
    box.user(login)
    box.pass_(password)
    response, lst, octets = box.list()
    x=[] #темповый массив для команд и мусора
    for msgnum, msgsize in [i.split() for i in lst]:
    (resp, lines, octets) = box.retr(msgnum) #получаем письмо с темой, отправителем, текстом письма
    msgtext = "\n".join(lines) + "\n\n"
        message = email.message_from_string(msgtext)#получим только тело(текст) письма
    message_body = message.get_payload()
        x.append(message_body) 
        box.dele(msgnum)#удалим все пришедшие сообщения, чтобы они нас не смущали потом
    box.quit()
    command=[]
    for i in x:
        g=i.split()
        for j in g: 
           if '/' in j: command.append(j)#из темпового массива вытащим все команды
    print "Commands:"
    print command
    return command #вернем list-список команд

Ну и собственно в головном модуле будем получать list из команд, смотреть, есть ли там исполняемые команды и выполнять их:
inputInformation=returnCommand()
   outputString=''
   for inputString in inputInformation:
       kol=0
       if '/film' in inputString: outputString+='|'+getFilms(); kol=1
       if '/bash' in inputString: outputString+='|'+getRandomBashText(); kol=1
       if '/news' in inputString: outputString+='|'+getRandomNewsText(); kol=1
       if '/weather' in inputString: outputString+='|'+getRSSWeatherOne(); kol=1
       if '/anekdot' in inputString: outputString+='|'+getRandomAnekdot(); kol=1
       if kol==0: print 'Вы ошиблись с командой!'
   sendMessage(outputString, fromaddr, toaddrs, username, passwordmail)

Всё. В скором времени(решил приурочить покупку симки к покупке нового телефона) протестирую, может быть залью что-то новое :) А потом отпишусь.

Комментариев нет:

Отправить комментарий