<s> """<STR_LIT>""" <EOL> import sys <EOL> import smtplib <EOL> from email . header import Header <EOL> from email . mime . multipart import MIMEMultipart <EOL> from email . mime . text import MIMEText <EOL> from . . core import mail <EOL> from . . utils . misc import minimal_logger , is_true <EOL> LOG = minimal_logger ( __name__ ) <EOL> class SMTPMailHandler ( mail . CementMailHandler ) : <EOL> """<STR_LIT>""" <EOL> class Meta : <EOL> """<STR_LIT>""" <EOL> label = '<STR_LIT>' <EOL> config_defaults = { <EOL> '<STR_LIT:to>' : [ ] , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ ] , <EOL> '<STR_LIT>' : [ ] , <EOL> '<STR_LIT>' : None , <EOL> '<STR_LIT>' : None , <EOL> '<STR_LIT:host>' : '<STR_LIT:localhost>' , <EOL> '<STR_LIT:port>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : <NUM_LIT:30> , <EOL> '<STR_LIT>' : False , <EOL> '<STR_LIT>' : False , <EOL> '<STR_LIT>' : False , <EOL> '<STR_LIT:username>' : None , <EOL> '<STR_LIT:password>' : None , <EOL> } <EOL> def _get_params ( self , ** kw ) : <EOL> params = dict ( ) <EOL> for item in [ '<STR_LIT:to>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] : <EOL> config_item = self . app . config . get ( self . _meta . config_section , item ) <EOL> params [ item ] = kw . get ( item , config_item ) <EOL> other_params = [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT:host>' , '<STR_LIT:port>' , '<STR_LIT>' , '<STR_LIT:username>' , <EOL> '<STR_LIT:password>' , '<STR_LIT>' ] <EOL> for item in other_params : <EOL> params [ item ] = self . app . config . get ( self . _meta . config_section , <EOL> item ) <EOL> params [ '<STR_LIT>' ] = self . app . config . get ( <EOL> self . _meta . config_section , <EOL> '<STR_LIT>' <EOL> ) <EOL> return params <EOL> def send ( self , body , ** kw ) : <EOL> """<STR_LIT>""" <EOL> params = self . _get_params ( ** kw ) <EOL> if is_true ( params [ '<STR_LIT>' ] ) : <EOL> server = smtplib . SMTP_SSL ( params [ '<STR_LIT:host>' ] , params [ '<STR_LIT:port>' ] , <EOL> params [ '<STR_LIT>' ] ) <EOL> LOG . debug ( "<STR_LIT>" % self . _meta . label ) <EOL> if is_true ( params [ '<STR_LIT>' ] ) : <EOL> LOG . debug ( "<STR_LIT>" % self . _meta . label ) <EOL> server . starttls ( ) <EOL> else : <EOL> server = smtplib . SMTP ( params [ '<STR_LIT:host>' ] , params [ '<STR_LIT:port>' ] , <EOL> params [ '<STR_LIT>' ] ) <EOL> if is_true ( params [ '<STR_LIT>' ] ) : <EOL> server . login ( params [ '<STR_LIT:username>' ] , params [ '<STR_LIT:password>' ] ) <EOL> if self . app . debug is True : <EOL> server . set_debuglevel ( <NUM_LIT:9> ) <EOL> if int ( sys . version [ <NUM_LIT:0> ] ) >= <NUM_LIT:3> : <EOL> self . _send_message ( server , body , ** params ) <EOL> else : <EOL> self . _send_message_py2 ( server , body , ** params ) <EOL> server . quit ( ) <EOL> def _send_message ( self , server , body , ** params ) : <EOL> msg = MIMEMultipart ( '<STR_LIT>' ) <EOL> msg . set_charset ( '<STR_LIT:utf-8>' ) <EOL> msg [ '<STR_LIT>' ] = params [ '<STR_LIT>' ] <EOL> msg [ '<STR_LIT>' ] = '<STR_LIT:U+002CU+0020>' . join ( params [ '<STR_LIT:to>' ] ) <EOL> msg [ '<STR_LIT>' ] = '<STR_LIT:U+002CU+0020>' . join ( params [ '<STR_LIT>' ] ) <EOL> msg [ '<STR_LIT>' ] = '<STR_LIT:U+002CU+0020>' . join ( params [ '<STR_LIT>' ] ) <EOL> if params [ '<STR_LIT>' ] not in [ None , '<STR_LIT>' ] : <EOL> subject = '<STR_LIT>' % ( params [ '<STR_LIT>' ] , <EOL> params [ '<STR_LIT>' ] ) <EOL> else : <EOL> subject = params [ '<STR_LIT>' ] <EOL> msg [ '<STR_LIT>' ] = Header ( subject ) <EOL> part = MIMEText ( body ) <EOL> msg . attach ( part ) <EOL> server . send_message ( msg ) <EOL> def _send_message_py2 ( self , server , body , ** params ) : <EOL> msg = "<STR_LIT>" <EOL> msg += "<STR_LIT>" % ( params [ '<STR_LIT>' ] , <EOL> '<STR_LIT:U+002CU+0020>' . join ( params [ '<STR_LIT:to>' ] ) ) <EOL> msg += "<STR_LIT>" % '<STR_LIT:U+002CU+0020>' . join ( params [ '<STR_LIT>' ] ) <EOL> msg += "<STR_LIT>" % '<STR_LIT:U+002CU+0020>' . join ( params [ '<STR_LIT>' ] ) <EOL> if params [ '<STR_LIT>' ] not in [ None , '<STR_LIT>' ] : <EOL> msg += "<STR_LIT>" % ( params [ '<STR_LIT>' ] , <EOL> params [ '<STR_LIT>' ] ) <EOL> else : <EOL> msg += "<STR_LIT>" % params [ '<STR_LIT>' ] <EOL> msg += body + "<STR_LIT:\n>" <EOL> server . sendmail ( params [ '<STR_LIT>' ] , <EOL> params [ '<STR_LIT:to>' ] + params [ '<STR_LIT>' ] + params [ '<STR_LIT>' ] , <EOL> msg ) <EOL> def load ( app ) : <EOL> app . handler . register ( SMTPMailHandler ) </s>
