admin revised this gist . Go to revision
No changes
admin revised this gist . Go to revision
1 file changed, 10 insertions
dasinbox.py(file created)
| @@ -0,0 +1,10 @@ | |||
| 1 | + | from inbox import Inbox | |
| 2 | + | ||
| 3 | + | inbox = Inbox() | |
| 4 | + | ||
| 5 | + | @inbox.collate | |
| 6 | + | def handle(to, sender, body): | |
| 7 | + | ... | |
| 8 | + | ||
| 9 | + | # Bind directly. | |
| 10 | + | inbox.serve(address='0.0.0.0', port=4467) | |
admin revised this gist . Go to revision
1 file changed, 26 insertions
SMTP_sink_server.py(file created)
| @@ -0,0 +1,26 @@ | |||
| 1 | + | from datetime import datetime | |
| 2 | + | import asyncore | |
| 3 | + | from smtpd import SMTPServer | |
| 4 | + | ||
| 5 | + | class EmlServer(SMTPServer): | |
| 6 | + | no = 0 | |
| 7 | + | def process_message(self, peer, mailfrom, rcpttos, data): | |
| 8 | + | filename = '%s-%d.eml' % (datetime.now().strftime('%Y%m%d%H%M%S'), | |
| 9 | + | self.no) | |
| 10 | + | f = open(filename, 'w') | |
| 11 | + | f.write(data) | |
| 12 | + | f.close | |
| 13 | + | print '%s saved.' % filename | |
| 14 | + | self.no += 1 | |
| 15 | + | ||
| 16 | + | ||
| 17 | + | def run(): | |
| 18 | + | foo = EmlServer(('localhost', 25), None) | |
| 19 | + | try: | |
| 20 | + | asyncore.loop() | |
| 21 | + | except KeyboardInterrupt: | |
| 22 | + | pass | |
| 23 | + | ||
| 24 | + | ||
| 25 | + | if __name__ == '__main__': | |
| 26 | + | run() | |