summaryrefslogtreecommitdiff
path: root/service/pixelated/adapter/services/mail_sender.py
diff options
context:
space:
mode:
authorBruno Wagner & Victor Shyba <bwgpro+victor.shyba@gmail.com>2015-02-27 20:14:03 -0300
committerPixpoa pairing <pixpoapairing@pixelated-project.org>2015-02-27 20:14:03 -0300
commitb39dd32f852d8ee6ed088c0d576d239194ccf6e5 (patch)
tree7aad814340f6cafc7b2e5c86be4b4373503ee67f /service/pixelated/adapter/services/mail_sender.py
parentb0084ec7184b2183d1ccabe1a0e017473e7a2892 (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.py29
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())