test_cookbook.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from typing import Union
  2. from textwrap import dedent
  3. from redmail import EmailSender
  4. from convert import remove_email_content_id, prune_generated_headers
  5. def test_distributions():
  6. class DistrSender(EmailSender):
  7. "Send email using pre-defined distribution lists"
  8. def __init__(self, *args, distribution:dict, **kwargs):
  9. super().__init__(*args, **kwargs)
  10. self.distributions = distribution
  11. def get_receivers(self, receiver_list):
  12. if receiver_list:
  13. return self.distributions[receiver_list]
  14. def get_cc(self, receiver_list):
  15. if receiver_list:
  16. return self.distributions[receiver_list]
  17. def get_bcc(self, receiver_list):
  18. if receiver_list:
  19. return self.distributions[receiver_list]
  20. email = DistrSender(
  21. host="localhost",
  22. port=0,
  23. distribution={
  24. 'group1': ["me@example.com", "you@example.com"],
  25. 'group2': ["he@example.com", "she@example.com"],
  26. }
  27. )
  28. msg = email.get_message(
  29. sender="me@example.com",
  30. receivers="group1",
  31. cc="group2",
  32. subject="Some email",
  33. )
  34. msg = prune_generated_headers(str(msg))
  35. msg = remove_email_content_id(str(msg))
  36. assert msg == dedent("""
  37. from: me@example.com
  38. subject: Some email
  39. to: me@example.com, you@example.com
  40. cc: he@example.com, she@example.com
  41. Message-ID: <<message_id>>
  42. Date: <date>
  43. """)[1:]