import argparse import base64 import json import xmlrpclib def get_next_message(api, to_address, prev_id): messages = json.loads(api.getAllInboxMessages())['inboxMessages'] messages = [m for m in messages if m['toAddress'] == to_address] if len(messages) == 0: return None if not prev_id: return messages[0] for (prev, next) in zip(messages, messages[1:]): if prev['msgid'] == prev_id: return next def main(): parser = argparse.ArgumentParser() parser.add_argument('--prev-id') parser.add_argument('--api', default="http://username:password@127.0.0.1:8442/") parser.add_argument('--to-address') parser.add_argument('--from-address') parser.add_argument('--output-id') parser.add_argument('--output-text') args = parser.parse_args() api = xmlrpclib.ServerProxy(args.api) next_message = get_next_message(api, args.to_address, args.prev_id) if not next_message: return with open(args.output_text, 'w') as f: f.write(base64.b64decode(next_message['message'])) with open(args.output_id, 'w') as f: f.write(next_message['msgid']) with open(args.from_address, 'w') as f: f.write(next_message['fromAddress']) if __name__ == '__main__': main()