#
# Faiyaz Ahmed <faiyaza@cs.princeton.edu>
#
-# $Id: $
+# $Id: mailer.py,v 1.7 2007/04/06 16:16:53 faiyaza Exp $
from emailTxt import *
-import xml, xmlrpclib
import smtplib
+from config import config
+import logging
-MTA="localhost"
-FROM="support@planet-lab.org"
-
-XMLRPC_SERVER = 'https://www.planet-lab.org/PLCAPI/'
+config = config()
+logger = logging.getLogger("monitor")
-def siteId(hostname):
- api = xmlrpclib.Server(XMLRPC_SERVER, verbose=False)
- anon = {'AuthMethod': "anonymous"}
- site_id = api.AnonAdmQuerySite (anon, {"node_hostname": hostname})
- if len(site_id) == 1:
- loginbase = api.AnonAdmGetSites (anon, site_id, ["login_base"])
- return loginbase[0]['login_base']
+MTA="localhost"
+FROM="monitor@planet-lab.org"
-def email (subject, text, to, cc = None):
+def email(subject, text, to):
"""Create a mime-message that will render HTML in popular
MUAs, text in better ones"""
import MimeWriter
import mimetools
import cStringIO
+ if config.mail and config.debug:
+ to = [config.email]
+
out = cStringIO.StringIO() # output buffer for our message
txtin = cStringIO.StringIO(text)
# message body
#
writer.addheader("Subject", subject)
- writer.addheader("To", to)
- if cc: writer.addheader("CC", cc)
+ if to.__class__ == [].__class__ :
+ writer.addheader("To", to[0])
+ cc = ""
+ for dest in to[1:len(to)]:
+ cc +="%s, " % dest
+ cc = cc.rstrip(", ")
+ writer.addheader("Cc", cc)
+ else:
+ writer.addheader("To", to)
+
+ if config.bcc:
+ print "Adding bcc"
+ writer.addheader("Bcc", config.email)
+
+ writer.addheader("Reply-To", 'monitor@planet-lab.org')
+
writer.addheader("MIME-Version", "1.0")
#
# start the multipart section of the message
writer.lastpart()
msg = out.getvalue()
out.close()
-
- #server = smtplib.SMTP(MTA)
- #server.sendmail(FROM, (to,cc), msg)
- #server.quit()
+ # three cases:
+ # mail but no-debug
+ # mail and debug, 'to' changed at the beginning'
+ # nomail, but report who I'd send to.
+ if config.mail:
+ try:
+ # This is normal operation
+ server = smtplib.SMTP(MTA)
+ server.sendmail(FROM, to, msg)
+ server.quit()
+ except Exception, err:
+ print "Mailer error: %s" % err
+ else:
+ #print "Would mail %s" %to
+ logger.debug("Would send mail to %s" % to)
if __name__=="__main__":
import smtplib
import emailTxt
- id = siteId("alice.cs.princeeton.edu")
- if id:
- email('TEST', emailTxt.mailtxt.STANDARD % {'hostname': "ALICE.cs.princeton.edu"}, "tech-" + id + "@sites.planet-lab.org")
- else:
- print "No dice."
+ import plc
+ email("[spam] This is a mail-test from golf.cs.princeton.edu",
+ "I'm concerned that emails aren't leaving golf. Sorry for the spam",
+ "princetondsl@sites.planet-lab.org")
+ #id = plc.siteId(["alice.cs.princeton.edu"])
+ #print id
+ #if id:
+ #email('TEST', emailTxt.mailtxt.ssh % {'hostname': "ALICE.cs.princeton.edu"}, "tech-" + id + "@sites.planet-lab.org")
+ #else:
+ # print "No dice."
+ #email("TEST111", "I'd like to see if this works anywhere", ["soltesz@cs.princeton.edu", "soltesz@cs.utk.edu"])
+ #print "mailer does nothing in main()"