Package pysys :: Package utils :: Module smtpserver
[hide private]
[frames] | no frames]

Source Code for Module pysys.utils.smtpserver

 1  #!/usr/bin/env python 
 2  # PySys System Test Framework, Copyright (C) 2006-2013  M.B.Grieve 
 3   
 4  # This library is free software; you can redistribute it and/or 
 5  # modify it under the terms of the GNU Lesser General Public 
 6  # License as published by the Free Software Foundation; either 
 7  # version 2.1 of the License, or (at your option) any later version. 
 8   
 9  # This library is distributed in the hope that it will be useful, 
10  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
11  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
12  # Lesser General Public License for more details. 
13   
14  # You should have received a copy of the GNU Lesser General Public 
15  # License along with this library; if not, write to the Free Software 
16  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 
17   
18  # Contact: moraygrieve@users.sourceforge.net 
19    
20  import asyncore, smtpd, threading 
21   
22  from pysys.constants import * 
23   
24   
25 -class SimpleSMTPServer(smtpd.SMTPServer):
26 - def __init__(self, localaddr, remoteaddr, filename='smtpserver.out', logMails=True):
27 smtpd.SMTPServer.__init__(self, localaddr, remoteaddr) 28 try: 29 self.fp = open(filename, 'w') 30 self.logMails = logMails 31 self.count = 0 32 except: 33 pass
34
35 - def process_message(self, peer, mailfrom, rcpttos, data):
36 self.count = self.count + 1 37 if self.fp: 38 self.fp.write("SimpleSMTPServer: Message count = %d\n" % self.count) 39 if self.logMails: self.fp.write(data) 40 self.fp.flush()
41 42
43 -class SimpleSMTPServerRunner:
44 - def __init__(self):
45 self.exit = 0
46
47 - def kickoff(self):
48 while not self.exit: 49 asyncore.loop(timeout=1.0, use_poll=False, count=1)
50
51 - def start(self):
52 threading.Thread(target=self.kickoff).start()
53
54 - def stop(self):
55 self.exit = 1
56