--- 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 == "":