Thanks for considering contributing to TempMail-UnofficialAPI. This document covers how to add providers, languages, and tests.
Please read our Code of Conduct before participating.
Each language lives in its own top-level directory (python/, go/, javascript/, etc.) and follows the same interface contract. See ARCHITECTURE.md for the full layout.
Every provider must implement the common interface:
| Method | Description |
|---|---|
generate_email() |
Generate or assign a new temporary email address |
get_inbox(email) |
Return a list of Message objects |
read_message(message_id) |
Return a MessageDetail with body and attachments |
delete_email(email) |
Delete the mailbox; return True/true on success |
wait_for_email(email, timeout, interval) |
Poll get_inbox until a matching message arrives |
- Create
python/tempmail_wrapper/providers/newprovider.py. - Subclass
TempMailProviderfrombase.pyand implement all abstract methods. - Register the provider in
factory.pyunder_PROVIDERS. - Add
__init__.pyexport inproviders/. - Write E2E tests in
python/tests/. - Repeat for each language, following the same contract.
- REST API: Mail.tm, GuerrillaMail — standard HTTP calls.
- GraphQL: Dropmail.me — query-based mutations.
- HTML Scraping: YOPmail — BeautifulSoup/DOM parsing with fallback regex.
Pick the method that matches the service's public interface. Prefer REST > GraphQL > Scraping in terms of stability.
- Create a new top-level directory (e.g.,
kotlin/). - Implement the interface contract using idiomatic patterns for that language.
- Include data models (
Message,MessageDetail) and an error hierarchy. - Add a factory function for provider creation by name.
- Write E2E tests covering all 16 providers.
- Add a
README.mdinside the language directory.
Use the existing Python or Go implementation as a reference for behavior parity.
All tests are end-to-end against real provider APIs. No mocks. See TESTING.md for the full testing guide.
The required test flow:
- Generate email
- Send a test message (via the Resend API or equivalent)
- Poll inbox until the message arrives
- Read the message and verify subject, sender, and body
- Delete the email
- Fork the repository at github.com/josskixg/TempMail-UnofficialAPI.
- Create a feature branch from
main. - Implement changes following the patterns above.
- Ensure E2E tests pass for the affected language(s).
- Update the relevant per-language
README.mdif API surface changes. - Submit a pull request with a clear description of what was added or changed.
Pull requests should:
- Cover one feature or provider per PR.
- Pass existing E2E tests without regression.
- Follow the idiomatic style of the target language.
- Not introduce new dependencies without justification.
Open a GitHub Issue with:
- The language and provider affected.
- Steps to reproduce.
- Expected vs actual behavior.
For security issues, see SECURITY.md.