#!/usr/bin/python3

import os
import sys
import mailbox
import lxml
import lxml.html
import lxml.html.html5parser
import requests
import tempfile
import subprocess
import shutil
import atexit
import time

try: account = sys.argv[1]
except IndexError: account = 'slashdotaccount'
session = requests.session()
params = { 'public_to': account, 'x': 0 }
response = session.get('https://www.mailinator.com/api/webinbox2', params=params)
if response.status_code != 200:
	print('HTTP error:', response.status_code)
	sys.exit(1)
json = response.json()
if 'error' in json:
	print('JSON error:', json['error'])
	sys.exit(1)
inbox = json['public_msgs']
tmpdir = tempfile.mkdtemp(prefix='mailinator.%s.' % account, suffix='.tmp')
atexit.register(shutil.rmtree, tmpdir)
maildir_name = os.path.join(tmpdir, 'Maildir')
maildir = mailbox.Maildir(maildir_name)
proc = subprocess.Popen(['mutt', '-Rf', maildir_name])
sleep = 1
for msg in inbox:
	time.sleep(sleep)
	msgid = msg['id']
	params = { 'msgid': msgid, 'format': 'raw', 'zone': 'public' }
	while True:
		response = session.get('https://www.mailinator.com/fetchmail', params=params)
		if response.status_code == requests.codes.ok:
			break
		else:
			time.sleep(sleep)
	if response.status_code == 200:
		json = response.json()
		mail = json['data']['data']
		maildir.add(bytes(mail, encoding='utf-8'))
proc.wait()
