Автор Тема: Python  (Прочетена 1146 пъти)

glam

  • Новаци
  • *
  • Публикации: 1
    • Профил
Python
« -: Jan 11, 2007, 13:00 »
Помощ  !!!
 Започнах да уча прогрмиране с Питон и едно от упражненията е
 да допълня един скрипт които чете е-мейл от IMAP сървър и го
 доставя до локалната машина след което преглежда всяко от
 тях и ако е спам го записва в зададена папка, ако ли не го
 доставя до е-мейл кутията чрез smtp. За да бъде спам е-мейла
 скрипта чете всяка линия за HTML и ако повече от 60%  в
 изреченията е HTML то саобщението е спам. От една седмица се
 мъча да реща проблема, но нестава и нестава. Ето и самия
сцкрипт.
#!/usr/bin/python

import getpass, imaplib, string
from StringIO import StringIO


#  getBody – сваля заглабницата от е-мейла
#            връща само тялото на е-мейла

def getBody(message):
    body=""
    seenStart = 0
    for line in StringIO(message).readlines():
        l = string.strip(line)
        if (seenStart == 1):
            body = body + "\n" + l
        elif l == "":
            seenStart = 1
    return body


 #  getField – връща стоиноста на "field" във секцията на
тялото


def getField(message, field):
    for line in StringIO(message).readlines():
        l = string.strip(line)
        if (string.find(l, field) != -1):
            words = string.split(l, field)
            return words[1]
    return "unknown"



 #  containsTag - връща TRUE ако html тагове <'t' са
намерени

            
def containsTag(l, t):
    return ((string.find(l, "<" + t) != -1) or
            (string.find(l, "</" + t) != -1))


#  isSpam - връща 1 ако саобщението изглежда като спам
#           връща 0 ако саобщението изглежда добре


def isSpam(message):
    total = 0
    htmlFound = 0
    for line in StringIO(getBody(message)).readlines():
        print line
  
 # тук скрипта е недовършен и връща всичко като добро
    
    return 0
        


# postEmail – изпрща саобщение до smtp порта


def postEmail(message):
    print "message from", getField(message, "From:")
    print "subject is", getField(message, "Subject:")
    
    # недовършен отново


#  handleEmail – прави проверка дали саобщението е спам.
#                Ако е спам го прибавя към файл
#        ако не е го изпраща до smtp порта

def handleEmail(message):
    if (isSpam(message)):
        print "message is spam"
    else:
        print "message is good"
        postEmail(message)
    # недовършен отново
    


#  collectEmail – събира е-мейлите от imap сървъра


def collectEmail():
    m = imaplib.IMAP4_SSL('uni-sofia.bg''<img'>
    m.login(getpass.getuser(), getpass.getpass())
    m.select()
    typ, data = m.search(None, 'ALL''<img'>
    print data
    for num in string.split(data[0]):
        print num
        typ, data = m.fetch(num, '(RFC822)''<img'>
        handleEmail(data[0][1])
    m.logout()

collectEmail()

 Доста съм зле със програмирането. Ако ниакой има опит със
 Питон сриптове ще му/й бъда много благодарен за съвет или
решение!!
Благодая ви предварително!!



Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Български счетоводен софтуер на Python
Предложения за български проект
cvludmiloff 3 3385 Последна публикация Jun 05, 2004, 17:38
от vladou
python-2.4-14.i586.rpm on SuSE 9.3
Настройка на програми
phantomlord 0 737 Последна публикация Apr 24, 2005, 16:31
от phantomlord
Python
Общ форум
fantom 6 2226 Последна публикация Nov 07, 2005, 18:51
от betso
Коренуване при python
Общ форум
ko_drugo 3 3930 Последна публикация Feb 18, 2007, 00:21
от ko_drugo
Интернет програмиране с python
Web development
IvanX 14 7240 Последна публикация Aug 07, 2011, 01:24
от b2l