#!/usr/bin/env python
# -*- coding: UTF-8 -*-

URL = 'http://assopy.pycon.it/conference/getinfo.py/empty_attendees'

SUBJECT = "[PyCon Tre] dati mancanti / incomplete data"

BODY = u"""Ciao, [English version below]

questa e-mail è stata inviata automaticamente da AssoPy perché
hai acquistato almeno un biglietto per PyCon Tre.

Ci risulta che uno o più biglietti associati al tuo account "%(username)s"
sono stati regolarmente acquistati, ma non sono stati ancora compilati.

E' molto importante che compili il biglietto inserendo il nome e cognome 
della persona che parteciperà e i giorni di presenza. Puoi farlo 
entrando in AssoPy usando il tuo username "%(username)s":
http://www.pycon.it/pycon3/assopy/

e andando nella sezione "Acquisti"

Grazie!
Gli organizzatori di PyCon

----------------------------------------------------------------------

Hello,

this e-mail was automatically generated by AssoPy because you have
bought at least a ticket for PyCon Italia 2009.

One or more tickets linked to your account "%(username)s" were correctly
bought, but have not yet been filled in.

It is important to fill in information for each ticket, by specifying
name and surname, and days of presence of each person. You can do it by
logging in into AssoPy using your username "%(username)s":
http://www.pycon.it/pycon3/assopy/

and going to the section "Shop"

Thanks!
PyCon Italy Organizers
"""

SERVER = 'localhost'
REPLYTO = 'gestionale@pycon.it'
FROM = 'gestionale@pycon.it'

import urllib2
import textwrap
import smtplib
from datetime import datetime
import simplejson
from pytz import timezone

data = simplejson.loads(urllib2.urlopen(URL).read())

now = timezone('Europe/Rome').localize(datetime.now())

envelope = """\
From: %(from)s
To: %%s
Subject: %(subject)s
Reply-To: %(reply)s 
Date: %(date)s

%%s
""" % { 'from': FROM, 'subject': SUBJECT, 'reply': REPLYTO, 'date': now.strftime('%a, %d %b %Y %H:%M:%S %z') }

server = smtplib.SMTP(SERVER)
try:
    for email, username in data['data']:
        body = BODY % { 'email': email, 'username': username }
        paragraphs = map(lambda p: textwrap.wrap(p, width=72), body.split('\n\n'))
        paragraphs = map(lambda l: '\n'.join(l), paragraphs)
        body = '\n\n'.join(paragraphs)

        email = email.encode('utf-8')
        e = envelope % (email, body.encode('utf-8'))
        print email
        server.sendmail(FROM, [ email ], e)
finally:
    server.quit()

@@ -1997,16 +1997,75 @@
 data'%5D:%0A
+        if not email or not username:%0A            continue%0A
         

ignoro email o username null