Forráskód Böngészése

upd: Made EmailSender more subclassable
Now has separate methods for getting receivers, cc and bcc.

Mikael Koli 4 éve
szülő
commit
ae8042405b
1 módosított fájl, 19 hozzáadás és 2 törlés
  1. 19 2
      redmail/email/sender.py

+ 19 - 2
redmail/email/sender.py

@@ -1,6 +1,6 @@
 
 from email.message import EmailMessage
-from typing import Callable, Dict, Optional, Union
+from typing import Callable, Dict, List, Optional, Union
 
 import jinja2
 from redmail.email.attachment import Attachments
@@ -77,6 +77,8 @@ class EmailSender:
         # Defaults
         self.sender = None
         self.receivers = None
+        self.cc = None
+        self.bcc = None
         self.subject = None
 
         self.text = None
@@ -165,7 +167,10 @@ class EmailSender:
 
         subject = subject or self.subject
         sender = sender or self.sender or self.user_name
-        receivers = receivers or self.receivers
+
+        receivers = self.get_receivers(receivers)
+        cc = self.get_cc(cc)
+        bcc = self.get_bcc(bcc)
 
         html = html or self.html
         text = text or self.text
@@ -212,6 +217,18 @@ class EmailSender:
             att.attach(msg)
         return msg
 
+    def get_receivers(self, receivers:Union[list, str]) -> List[str]:
+        """Get receivers of the email"""
+        return receivers or self.receivers
+
+    def get_cc(self, cc:Union[list, str]) -> Union[List[str], None]:
+        """Get carbon copy (cc) of the email"""
+        return cc or self.cc
+
+    def get_bcc(self, bcc:Union[list, str]) -> List[str]:
+        """Get blind carbon copy (bcc) of the email"""
+        return bcc or self.bcc
+
     def _create_body(self, subject, sender, receivers=None, cc=None, bcc=None) -> EmailMessage:
         msg = EmailMessage()
         msg["from"] = sender