你能建议一个简单的SMTP服务器,它有非常基本的API(非常基本的意思是读,写,删除电子邮件),可以在linux机器上运行吗?我只需要将电子邮件的关键字转换为XML格式并将其FTP到另一台机器.
has*_*sen 41
看一下这个SMTP sink服务器:
from __future__ import print_function
from datetime import datetime
import asyncore
from smtpd import SMTPServer
class EmlServer(SMTPServer):
no = 0
def process_message(self, peer, mailfrom, rcpttos, data):
filename = '%s-%d.eml' % (datetime.now().strftime('%Y%m%d%H%M%S'),
self.no)
f = open(filename, 'w')
f.write(data)
f.close
print('%s saved.' % filename)
self.no += 1
def run():
# start the smtp server on localhost:1025
foo = EmlServer(('localhost', 1025), None)
try:
asyncore.loop()
except KeyboardInterrupt:
pass
if __name__ == '__main__':
run()
Run Code Online (Sandbox Code Playgroud)
它用于smtpd.SMTPServer将电子邮件转储到文件.
Chr*_*ail 21
发送电子邮件确实需要2件事:
对于阅读,有两种选择,具体取决于您从哪个服务器阅读电子邮件.
为了让 Hasen 的脚本在 Python 3 中工作,我必须稍微调整一下:
from datetime import datetime
import asyncore
from smtpd import SMTPServer
class EmlServer(SMTPServer):
no = 0
def process_message(self, peer, mailfrom, rcpttos, data, **kwargs):
filename = '%s-%d.eml' % (datetime.now().strftime('%Y%m%d%H%M%S'),
self.no)
print(filename)
f = open(filename, 'wb')
f.write(data)
f.close
print('%s saved.' % filename)
self.no += 1
def run():
EmlServer(('localhost', 25), None)
try:
asyncore.loop()
except KeyboardInterrupt:
pass
if __name__ == '__main__':
run()
Run Code Online (Sandbox Code Playgroud)