def send(self): """ Send the requested mail using smtplib """ if not regex.match(regex.EMAIL, str(self.reply_to_addy)): self.reply_to_addy = self.from_addy self._validate_encoding() headers = [] headers.append('From: %s' % self.from_addy) headers.append('Reply-To: %s' % self.reply_to_addy) headers.append('To: %s' % ','.join(self.to_addy.split())) headers.append('Subject: %s' % self.subject) headers.append('\n') try: server = smtplib.SMTP(self.server) server.set_debuglevel(0) server.sendmail(self.from_addy, self.to_addy.split(), '\n'.join(headers) + self.body) server.quit() except socket.gaierror: raise
def hash(password, salt=None, pattern=regex.PASSWD): """ Generate a password hash @param password: User's password @type password: String @param salt: Salt for use with generating an existing hash @type salt: String @param pattern: Regex used to validate the password @type pattern: String (valid regex) @return: String >>> from chula import passwd >>> hashed = passwd.hash('mypassword') >>> len(hashed) == 46 True """ if not regex.match(pattern, password): raise error.MalformedPasswordError if salt is None: def generate_salt(): for i in xrange(SALT_LENGTH): yield chr(randrange(65, 122)) salt = ''.join(generate_salt()) return salt + hashlib.sha1(salt + password + lock).hexdigest()