diff -r e6af45edff5a -r 07ee5543751b iro/offer/smtp.py --- a/iro/offer/smtp.py Thu Feb 23 16:56:25 2012 +0100 +++ b/iro/offer/smtp.py Thu Feb 23 16:57:57 2012 +0100 @@ -13,48 +13,35 @@ import smtplib import copy +from functools import partial +from ..validate import vInteger, vEmail,vBool from ..model.status import Status +from ..config import Option from .provider import Provider, providers class SMTP(Provider): def __init__(self, name, config): Provider.__init__(self,name,config,{"mail":[None]}) - - - def loadConfig(self): - """Read options from config""" - needed=["send_from","host", "port", "user", "password"] - - for n in needed: - setattr(self,n,None) - - Provider.loadConfig(self) - self.bTLS = False - self.bSSL = False - - for (n, v) in self.config: - if n in needed: - setattr(self,n,v) - elif n == "TLS": - self.bTLS = bool(v) - elif n == "SSL": - self.bSSL = bool(v) - else: - raise UnknownOption(self.name, n) - - for n in needed: - if getattr(self,n) is None: - raise NeededOption(self.name, n) + self.options.update({ + "send_from":Option(vEmail,long="Emailaddress from which mail will be sended.",must=True), + "host":Option(lambda x,y:x, long="Hostname of MTA", must=True), + "port":Option(partial(vInteger,minv=0),long="Port of the MTA", default=25), + "user":Option(lambda x,y:x, long="username to login into MTA.",default=""), + "password":Option(lambda x,y:x, long="password to login into MTA.",default=""), + "TLS":Option(vBool,long="use TLS for connection to MTA", default=False), + "SSL":Option(vBool,long="use SSL for connection to MTA", default=False), + }) + self.loadConfig() def send(self,mail,recipient): if not self.testmode: - if self.bSSL: + if self.SSL: smtp = smtplib.SMTP_SSL(self.host,self.port) else: smtp = smtplib.SMTP(self.host,self.port) - if self.bTLS: + if self.TLS: smtp.starttls() if not self.user == "":