summaryrefslogtreecommitdiff
path: root/service/pixelated
diff options
context:
space:
mode:
authorDuda Dornelles <ddornell@thoughtworks.com>2014-09-01 16:24:46 -0300
committerDuda Dornelles <ddornell@thoughtworks.com>2014-09-01 16:24:56 -0300
commita44f7738f43a349a8c3fd4768dd54add13b3ce12 (patch)
treef247e611fa2eae630e5a74205c2abeda6eae6404 /service/pixelated
parent19391f5b4701d6ec933b016c28808e7d60157cbf (diff)
support multiple to, cc and bcc
Diffstat (limited to 'service/pixelated')
-rw-r--r--service/pixelated/adapter/pixelated_mail.py12
-rw-r--r--service/pixelated/adapter/pixelated_mail_sender.py10
-rw-r--r--service/pixelated/support/__init__.py15
-rw-r--r--service/pixelated/support/functional.py20
4 files changed, 52 insertions, 5 deletions
diff --git a/service/pixelated/adapter/pixelated_mail.py b/service/pixelated/adapter/pixelated_mail.py
index e43d5510..d20a93f4 100644
--- a/service/pixelated/adapter/pixelated_mail.py
+++ b/service/pixelated/adapter/pixelated_mail.py
@@ -42,7 +42,13 @@ class PixelatedMail:
self.headers['from'] = [_from]
def get_to(self):
- return self.headers['to'][0]
+ return self.headers['to']
+
+ def get_cc(self):
+ return self.headers['cc']
+
+ def get_bcc(self):
+ return self.headers['bcc']
def _extract_status(self):
return Status.from_flags(self.leap_mail.getFlags())
@@ -81,7 +87,9 @@ class PixelatedMail:
def to_mime_multipart(self):
mime_multipart = MIMEMultipart()
- mime_multipart['To'] = self.headers['to'][0]
+ mime_multipart['To'] = ", ".join(self.headers['to'])
+ mime_multipart['Cc'] = ", ".join(self.headers['cc'])
+ mime_multipart['Bcc'] = ", ".join(self.headers['bcc'])
mime_multipart['Subject'] = self.headers['subject']
mime_multipart.attach(MIMEText(self.body, 'plain'))
return mime_multipart
diff --git a/service/pixelated/adapter/pixelated_mail_sender.py b/service/pixelated/adapter/pixelated_mail_sender.py
index 3ace6814..6f6340da 100644
--- a/service/pixelated/adapter/pixelated_mail_sender.py
+++ b/service/pixelated/adapter/pixelated_mail_sender.py
@@ -14,6 +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/>.
import smtplib
+from pixelated.support.functional import flatten
class PixelatedMailSender():
@@ -22,7 +23,10 @@ class PixelatedMailSender():
self.smtp_client = smtplib.SMTP('localhost', 4650)
def sendmail(self, mail):
- _from = self.account_email_address
- _to = mail.get_to()
+ recipients = flatten([mail.get_to(), mail.get_cc(), mail.get_bcc()])
- self.smtp_client.sendmail(_from, _to, mail.to_smtp_format(_from=_from))
+ self.smtp_client.sendmail(
+ self.account_email_address,
+ recipients,
+ mail.to_smtp_format(_from=self.account_email_address)
+ )
diff --git a/service/pixelated/support/__init__.py b/service/pixelated/support/__init__.py
new file mode 100644
index 00000000..2756a319
--- /dev/null
+++ b/service/pixelated/support/__init__.py
@@ -0,0 +1,15 @@
+#
+# Copyright (c) 2014 ThoughtWorks, Inc.
+#
+# Pixelated is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Pixelated is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
diff --git a/service/pixelated/support/functional.py b/service/pixelated/support/functional.py
new file mode 100644
index 00000000..e779f5bc
--- /dev/null
+++ b/service/pixelated/support/functional.py
@@ -0,0 +1,20 @@
+#
+# Copyright (c) 2014 ThoughtWorks, Inc.
+#
+# Pixelated is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Pixelated is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# 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 itertools import chain
+
+
+def flatten(_list):
+ return list(chain.from_iterable(_list))