refactor email interface
close #184
- instead of returning a tuple with mailgun's response (which locks us in to mailgun's way-of-working), assume best-case and have
EmailError
raised - let mailgun I/O be mocked via a "Sender" interface (
tests.util.mock.MockSender
)
future work not in this MR:
- refactor email token interface so that it's also on EmailManager