diff options
author | Bruno Wagner & Victor Shyba <bwgpro+victor.shyba@gmail.com> | 2015-02-27 20:14:03 -0300 |
---|---|---|
committer | Pixpoa pairing <pixpoapairing@pixelated-project.org> | 2015-02-27 20:14:03 -0300 |
commit | b39dd32f852d8ee6ed088c0d576d239194ccf6e5 (patch) | |
tree | 7aad814340f6cafc7b2e5c86be4b4373503ee67f /service/pixelated/adapter/services/mail_sender.py | |
parent | b0084ec7184b2183d1ccabe1a0e017473e7a2892 (diff) |
Refactored out tag service and replaced mail normalization with built-in parseaddr
Also made some minor fixes based on pylint output
Diffstat (limited to 'service/pixelated/adapter/services/mail_sender.py')
-rw-r--r-- | service/pixelated/adapter/services/mail_sender.py | 29 |
1 files changed, 8 insertions, 21 deletions
diff --git a/service/pixelated/adapter/services/mail_sender.py b/service/pixelated/adapter/services/mail_sender.py index 9f42fbbc..bbcc1721 100644 --- a/service/pixelated/adapter/services/mail_sender.py +++ b/service/pixelated/adapter/services/mail_sender.py @@ -14,7 +14,7 @@ # You should have received a copy of the GNU Affero General Public License # along with Pixelated. If not, see <http://www.gnu.org/licenses/>. from StringIO import StringIO -import re +from email.utils import parseaddr from twisted.internet.defer import Deferred, fail from twisted.mail.smtp import SMTPSenderFactory @@ -28,35 +28,22 @@ class SMTPDownException(Exception): class MailSender(object): + def __init__(self, account_email_address, ensure_smtp_is_running_cb): self.ensure_smtp_is_running_cb = ensure_smtp_is_running_cb self.account_email_address = account_email_address - def recepients_normalizer(self, mail_list): - return set(mail_list) - - def get_email_addresses(self, mail_list): - clean_mail_list = [] - for mail_address in mail_list: - if "<" in mail_address: - match = re.search(r'<(.*)>', mail_address) - clean_mail_list.append(match.group(1)) - else: - clean_mail_list.append(mail_address) - return self.recepients_normalizer(clean_mail_list) - def sendmail(self, mail): if self.ensure_smtp_is_running_cb(): recipients = flatten([mail.to, mail.cc, mail.bcc]) - normalized_recipients = self.get_email_addresses(recipients) - resultDeferred = Deferred() - senderFactory = SMTPSenderFactory( + result_deferred = Deferred() + sender_factory = SMTPSenderFactory( fromEmail=self.account_email_address, - toEmail=normalized_recipients, + toEmail=set([parseaddr(recipient)[1] for recipient in recipients]), file=StringIO(mail.to_smtp_format()), - deferred=resultDeferred) + deferred=result_deferred) - reactor.connectTCP('localhost', 4650, senderFactory) + reactor.connectTCP('localhost', 4650, sender_factory) - return resultDeferred + return result_deferred return fail(SMTPDownException()) |