From 90dbf440c7ff45c617eabcd74baadf52c71cace5 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Wed, 9 Jan 2013 16:57:19 -0600 Subject: [PATCH] optional mail.settings.sender, thanks Michele --- VERSION | 2 +- gluon/tools.py | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/VERSION b/VERSION index d36c6543..73372cfc 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.4.1-alpha.2+timestamp.2013.01.09.16.09.41 +Version 2.4.1-alpha.2+timestamp.2013.01.09.16.56.34 diff --git a/gluon/tools.py b/gluon/tools.py index 4c5d6d3c..0244fee9 100644 --- a/gluon/tools.py +++ b/gluon/tools.py @@ -272,7 +272,7 @@ class Mail(object): cc=None, bcc=None, reply_to=None, - sender='%(sender)s', + sender=None, encoding='utf-8', raw=False, headers={} @@ -360,9 +360,11 @@ class Mail(object): text = encode_header(text) return text + sender = sender or self.settings.sender + if not isinstance(self.settings.server, str): raise Exception('Server address not specified') - if not isinstance(self.settings.sender, str): + if not isinstance(sender, str): raise Exception('Sender address not specified') if not raw: @@ -458,11 +460,11 @@ class Mail(object): c.set_armor(1) c.signers_clear() # search for signing key for From: - for sigkey in c.op_keylist_all(self.settings.sender, 1): + for sigkey in c.op_keylist_all(sender, 1): if sigkey.can_sign: c.signers_add(sigkey) if not c.signers_enum(0): - self.error = 'No key for signing [%s]' % self.settings.sender + self.error = 'No key for signing [%s]' % sender return False c.set_passphrase_cb(lambda x, y, z: sign_passphrase) try: @@ -619,7 +621,6 @@ class Mail(object): # no cryptography process as usual payload = payload_in - sender = sender % dict(sender=self.settings.sender) payload['From'] = encoded_or_raw(sender.decode(encoding)) origTo = to[:] if to: @@ -655,16 +656,16 @@ class Mail(object): attachments = attachments and [(a.my_filename, a.my_payload) for a in attachments if not raw] if attachments: result = mail.send_mail( - sender=self.settings.sender, to=origTo, + sender=sender, to=origTo, subject=subject, body=text, html=html, attachments=attachments, **xcc) elif html and (not raw): result = mail.send_mail( - sender=self.settings.sender, to=origTo, + sender=sender, to=origTo, subject=subject, body=text, html=html, **xcc) else: result = mail.send_mail( - sender=self.settings.sender, to=origTo, + sender=sender, to=origTo, subject=subject, body=text, **xcc) else: smtp_args = self.settings.server.split(':') @@ -679,7 +680,7 @@ class Mail(object): if self.settings.login: server.login(*self.settings.login.split(':', 1)) result = server.sendmail( - self.settings.sender, to, payload.as_string()) + sender, to, payload.as_string()) server.quit() except Exception, e: logger.warn('Mail.send failure:%s' % e)