/
emailtrainer.py
executable file
·64 lines (54 loc) · 1.85 KB
/
emailtrainer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/python
# This module is part of the Divmod project and is Copyright 2003 Amir Bakhtiar:
# amir@divmod.org. This is free software; you can redistribute it and/or
# modify it under the terms of version 2.1 of the GNU Lesser General Public
# License as published by the Free Software Foundation.
#
from email.Message import Message
import email
import rfc822
class EmailItem(Message):
def summary(self):
return {
'From': self.sender(),
'Subject':self.get('subject','<No Subject>'),
}
def sender(self):
fromHeader = self['from'] or '"Nobody" <nobody@nowhere>'
hdrs = rfc822.AddressList(fromHeader).addresslist
for dispname, addr in hdrs:
dispname = dispname.strip().strip('"')
addr = addr.strip()
if dispname == '':
dispname = addr
return dispname
def columnDefs(self):
return [('From', 20), ('Subject', 30)]
columnDefs = classmethod(columnDefs)
def fromFile(self, fp):
try:
msg = email.message_from_file(fp, self)
except email.Errors.MessageParseError:
print 'bad message'
return None
return msg
fromFile = classmethod(fromFile)
def runTrainer():
from reverend.ui.trainer import Trainer
from Tkinter import Tk
from reverend.guessers.email import EmailClassifier
root = Tk()
root.title('Reverend Trainer')
root.minsize(width=300, height=300)
#root.maxsize(width=600, height=600)
guesser = EmailClassifier()
display = Trainer(root, guesser=guesser, itemClass=EmailItem)
root.mainloop()
def runTester():
from reverend.ui.tester import DirectoryExam
de = DirectoryExam('spam', 'Spam', EmailItem)
for m, ans in de:
print m['from'], ans
if __name__ == "__main__":
runTrainer()
#runTester()