Official Python SDK for Mail.td — temp mail & temporary email with REST API, webhooks, and custom domains.
Project description
mailtd
Official Python SDK for Mail.td — temp mail & temporary email with REST API, webhooks, and custom domains. Instant inboxes, password protected, sign in from any device.
- Temp Mail API — Create and manage temporary email addresses programmatically
- Webhooks — Get notified in real-time when emails arrive
- Custom Domains — Use your own domain for branded temporary mailboxes
- Password Protected — Sign in to the same mailbox from any device
Install
pip install mailtd
Requires Python 3.9+.
Quick Start
from mailtd import MailTD
client = MailTD("td_...")
# Create a temporary email address
account = client.accounts.create("test@mail.td", password="mypassword")
# List messages
messages, page = client.messages.list(account.id)
# Get a message
msg = client.messages.get(account.id, messages[0].id)
print(msg.subject, msg.text_body)
Use Cases
- Automated testing — Create temp mail addresses in CI/CD to test signup flows, OTP verification, and transactional emails
- Email verification testing — Validate that your app sends the right emails with the right content
- QA environments — Give each test run its own mailbox, then tear it down
Authentication
All API calls require a Pro API Token (td_...). Pass it when creating the client:
# With a token string
client = MailTD("td_...")
# With custom base URL
client = MailTD("td_...", base_url="https://api.mail.td")
# As context manager
with MailTD("td_...") as client:
messages, _ = client.messages.list(account_id)
Resources
Accounts
domains = client.accounts.list_domains()
account = client.accounts.create("user@mail.td", password="pass123")
info = client.accounts.get(account_id)
client.accounts.reset_password(account_id, password="newpass")
client.accounts.delete(account_id)
Messages
messages, page = client.messages.list(account_id)
msg = client.messages.get(account_id, message_id)
eml = client.messages.get_source(account_id, message_id)
attachment = client.messages.get_attachment(account_id, message_id, 0)
client.messages.mark_as_read(account_id, message_id)
count = client.messages.batch_mark_as_read(account_id, all=True)
client.messages.delete(account_id, message_id)
Domains (Pro)
domains = client.domains.list()
result = client.domains.create("example.com")
status = client.domains.verify(domain_id)
client.domains.delete(domain_id)
Webhooks (Pro)
webhook = client.webhooks.create("https://example.com/hook", events=["email.received"])
deliveries = client.webhooks.list_deliveries(webhook.id)
secret = client.webhooks.rotate_secret(webhook.id)
client.webhooks.delete(webhook.id)
Tokens (Pro)
result = client.tokens.create("CI Token")
tokens = client.tokens.list()
client.tokens.revoke(token_id)
Billing (Pro)
status = client.billing.get_status()
client.billing.cancel()
client.billing.resume()
url = client.billing.get_portal_url()
User (Pro)
me = client.user.get_me()
accounts = client.user.list_accounts()
client.user.delete_account(account_id)
client.user.reset_account_password(account_id, password="newpass")
messages, page = client.user.list_account_messages(account_id)
Error Handling
from mailtd import MailTD, APIError
try:
client.accounts.create("taken@mail.td", password="...")
except APIError as e:
print(e.status) # 409
print(e.code) # "address_taken"
Links
- Website — Temp mail & temporary email with REST API
- API Documentation — Full API reference
- Node.js SDK —
npm install mailtd - Go SDK —
go get github.com/mailtd/mailtd-go - CLI — Command-line tool
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mailtd-2.0.0-py3-none-any.whl.
File metadata
- Download URL: mailtd-2.0.0-py3-none-any.whl
- Upload date:
- Size: 12.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1dcfd876cfec8b706ecef64b241c87f3361314d101dba562eada1faabaf38d09
|
|
| MD5 |
45b78bcec9362e38e10daed26325d7c6
|
|
| BLAKE2b-256 |
45a593907e1aa33c7cfbcc40d9a9e0ba9d0903cd6621cf6d2a1b8992d8926afb
|