iro/offer/smtp.py
branchdevel
changeset 183 07ee5543751b
parent 180 55ab949cf0f8
child 186 b381eaa774ab
--- 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 == "":