diff --git a/homeassistant/components/notify/smtp.py b/homeassistant/components/notify/smtp.py index 27c74571d40..9ac73a49e3d 100644 --- a/homeassistant/components/notify/smtp.py +++ b/homeassistant/components/notify/smtp.py @@ -10,31 +10,46 @@ from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.image import MIMEImage +import voluptuous as vol + +import homeassistant.helpers.config_validation as cv from homeassistant.components.notify import ( - ATTR_TITLE, ATTR_DATA, DOMAIN, BaseNotificationService) -from homeassistant.helpers import validate_config + ATTR_TITLE, ATTR_DATA, PLATFORM_SCHEMA, BaseNotificationService) +from homeassistant.const import (CONF_USERNAME, CONF_PASSWORD, CONF_PORT) _LOGGER = logging.getLogger(__name__) ATTR_IMAGES = 'images' # optional embedded image file attachments +CONF_STARTTLS = 'starttls' +CONF_SENDER = 'sender' +CONF_RECIPIENT = 'recipient' +CONF_DEBUG = 'debug' +CONF_SERVER = 'server' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_RECIPIENT): cv.string, + vol.Optional(CONF_SERVER, default='localhost'): cv.string, + vol.Optional(CONF_PORT, default=25): cv.port, + vol.Optional(CONF_SENDER): cv.string, + vol.Optional(CONF_STARTTLS, default=False): cv.boolean, + vol.Optional(CONF_USERNAME): cv.string, + vol.Optional(CONF_PASSWORD): cv.string, + vol.Optional(CONF_DEBUG, default=False): cv.boolean, +}) + def get_service(hass, config): """Get the mail notification service.""" - if not validate_config({DOMAIN: config}, - {DOMAIN: ['recipient']}, - _LOGGER): - return None - mail_service = MailNotificationService( - config.get('server', 'localhost'), - int(config.get('port', '25')), - config.get('sender', None), - int(config.get('starttls', 0)), - config.get('username', None), - config.get('password', None), - config.get('recipient', None), - config.get('debug', 0)) + config.get(CONF_SERVER), + config.get(CONF_PORT), + config.get(CONF_SENDER), + config.get(CONF_STARTTLS), + config.get(CONF_USERNAME), + config.get(CONF_PASSWORD), + config.get(CONF_RECIPIENT), + config.get(CONF_DEBUG)) if mail_service.connection_is_valid(): return mail_service @@ -65,7 +80,7 @@ class MailNotificationService(BaseNotificationService): mail = smtplib.SMTP(self._server, self._port, timeout=5) mail.set_debuglevel(self.debug) mail.ehlo_or_helo_if_needed() - if self.starttls == 1: + if self.starttls: mail.starttls() mail.ehlo() if self.username and self.password: