X-Git-Url: http://git.tremily.us/?p=pyrisk.git;a=blobdiff_plain;f=pyrisk%2Fplayer%2Femail.py;h=4feb957d9c44d58e1e92734c107740a5f3cac933;hp=67bc7f9d14ae08187b1269e06abc5f2057b5f41d;hb=c5464efdf61bb3a7f5ead1240bc4a5b3fbb271fc;hpb=cb021ade17bfad70dd2c957ebfa1bf0edb857300 diff --git a/pyrisk/player/email.py b/pyrisk/player/email.py index 67bc7f9..4feb957 100644 --- a/pyrisk/player/email.py +++ b/pyrisk/player/email.py @@ -21,8 +21,9 @@ from __future__ import absolute_import from cStringIO import StringIO from email.generator import Generator from email.parser import Parser -from email.mime.text import MIMEText +from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart +from email.mime.text import MIMEText from email.utils import getaddresses, formataddr, formatdate, make_msgid import os import smtplib @@ -31,6 +32,7 @@ import sys import tempfile from ..base import Player, PlayerError +from ..graphics import WorldRenderer # Configure alternative sendmail command in case smtplib is too @@ -218,11 +220,12 @@ class EmailPlayer (Player): TODO: details on procmail setup """ - def __init__(self, name, address, incoming, outgoing): + def __init__(self, name, address, incoming, outgoing, world_renderer=None): Player.__init__(self, name) self.address = address self.outgoing = outgoing self.incoming = incoming + self.world_renderer = world_renderer def _tag(self): return '[PyRisk %d]' % (id(self)) def _send_mail(self, world, log, subject, body): @@ -230,6 +233,8 @@ class EmailPlayer (Player): msg.attach(encodedMIMEText(body, filename='body')) msg.attach(self._log_part(log)) msg.attach(self._world_part(world)) + if self.world_renderer != None: + msg.attach(self._rendered_world_part(world, log)) msg['To'] = formataddr((self.name, self.address)) tag = self._tag() msg['Subject'] = '%s %s' % (tag, subject) @@ -266,6 +271,15 @@ class EmailPlayer (Player): else: body.append(' %s\t%s\t%d' % (terr, terr.player, terr.armies)) return encodedMIMEText('\n'.join(body), filename='world') + def _rendered_world_part(self, log, world): + start_event = log[0] + players = start_event.players + body = self.world_renderer.render(world, players) + filename,subtype = \ + self.world_renderer.filename_and_mime_image_type(world) + part = MIMEImage(body, subtype) + part.add_header('Content-Disposition', 'attachment', filename) + return part def _log_part(self, log): return encodedMIMEText('\n'.join(log), filename='log') def report(self, world, log):