Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 14 additions & 5 deletions listen.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
#!/usr/bin/env python
# Original script written by Stuart Colville: http://muffinresearch.co.uk/archives/2010/10/15/fake-smtp-server-with-python/
"""A noddy fake smtp server."""

import os
import sys
import smtpd
import asyncore
import time
Expand All @@ -10,18 +11,26 @@ class FakeSMTPServer(smtpd.SMTPServer):
"""A Fake smtp server"""

def __init__(*args, **kwargs):
print "Running fake smtp server on port 25"
print "Running fake smtp server on smtp://" + str(locals()['args'][1][0]) + ":" + str(locals()['args'][1][1])
smtpd.SMTPServer.__init__(*args, **kwargs)

def process_message(*args, **kwargs):
mail = open("mails/"+str(time.time())+".eml", "w")
print "New mail from " + args[2]
fileLoc = os.path.dirname(__file__)+"/mails/"+str(time.time())+".eml"
mail = open(fileLoc, "w")
print "New mail from " + args[2] + " => " + fileLoc
mail.write(args[4])
mail.close
pass

if __name__ == "__main__":
smtp_server = FakeSMTPServer(('localhost', 25), None)
port = 25
if len(sys.argv) == 2:
try:
port = int(sys.argv[1])
except:
print("port must be integer, unknown value("+sys.argv[1]+") provided. default port 25 will be used")

smtp_server = FakeSMTPServer(('localhost', port), None)
try:
asyncore.loop()
except KeyboardInterrupt:
Expand Down