Anymail is maintained by its users. Your contributions are encouraged!

The Anymail source code is on GitHub.


See AUTHORS.txt for a list of some of the people who have helped improve Anymail.

Anymail evolved from the Djrill project. Special thanks to the folks from brack3t who developed the original version of Djrill.


You can report problems or request features in Anymail’s GitHub issue tracker. (For a security-related issue that should not be disclosed publicly, instead email Anymail’s maintainers at security<AT>anymail<DOT>info.)

We also have some Troubleshooting information that may be helpful.

Pull requests

Pull requests are always welcome to fix bugs and improve support for ESP and Django features.

  • Please include test cases.
  • We try to follow the Django coding style (basically, PEP 8 with longer lines OK).
  • By submitting a pull request, you’re agreeing to release your changes under under the same BSD license as the rest of this project.


Anymail is tested on Travis against several combinations of Django and Python versions. (Full list in .travis.yml.)

Most of the included tests verify that Anymail constructs the expected ESP API calls, without actually calling the ESP’s API or sending any email. So these tests don’t require API keys, but they do require mock (pip install mock).

To run the tests, either:

$ python test


$ python

Anymail also includes some integration tests, which do call the live ESP APIs. These integration tests require API keys (and sometimes other settings) they get from from environment variables. They’re skipped if these keys aren’t present. If you want to run them, look in the * files in the tests source for specific requirements.