An unofficial Python client library for Tacomail, a disposable email service. This library provides both synchronous and asynchronous interfaces to interact with the Tacomail API.
- ๐ Both synchronous and asynchronous clients
- ๐ง Generate random email addresses
- ๐ฅ Fetch and manage temporary inboxes
- ๐ Handle email attachments
- โฑ๏ธ Wait for specific emails with filtering capabilities
- ๐ Full type hints and dataclass models
pip install tacomail# Install and run CLI without affecting system Python
uvx tacomail createThe tacomail CLI provides comprehensive command-line interface for Tacomail disposable email service. All commands support both sync and async modes via the --async flag.
Email Generation & Domains:
tacomail create- Generate random email addresstacomail create-with-session- Generate email and create session in one command (RECOMMENDED)tacomail new- Short alias for 'create-with-session' (RECOMMENDED)tacomail list-domains- List all available Tacomail domains
Session Management:
tacomail create-session <email>- Create API session for receiving emailstacomail delete-session <email>- Delete API session
Inbox Operations:
tacomail list <email>- List recent emails in inboxtacomail get <email> <id>- Get specific email detailstacomail delete <email> <id>- Delete specific emailtacomail clear <email>- Delete all emails from inbox
Email Waiting:
tacomail wait <email>- Wait for new email to arrive--timeout <seconds>- Maximum wait time (default: 30)--interval <seconds>- Check interval (default: 2)--filter <pattern>- Filter by subject/sender (regex)
--async- Use async client instead of sync--verbose- Enable verbose/debug output--help- Show help message
Each command has its own help:
tacomail create --help
tacomail wait --help
tacomail list --help
# etc.Quick Start: Create email and session in one step
tacomail create-with-session
# Or use the short alias:
tacomail new
# Output: Email address and session information with expiration time
# Example:
# โญโโโโโโโโโโโโโโโโโโโโโโโโโโ โจ Email & Session Ready โโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
# โ Email Address: โ
# โ x7k9m2@tacomail.de โ
# โ โ
# โ Session Created โ
# โ โ
# โ Expires: 2026-01-15 23:59:59 โ
# โ Username: x7k9m2 โ
# โ Domain: tacomail.de โ
# โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏWith options:
# Use specific domain
tacomail create-with-session --domain tacomail.de
# Or with the alias:
tacomail new --domain tacomail.de
# Use specific username and domain
tacomail create-with-session --username myuser --domain tacomail.de
# Or with the alias:
tacomail new -u myuser -d tacomail.de
# Short options
tacomail create-with-session -d tacomail.de -u myuser
# Or with the alias:
tacomail new -d tacomail.de -u myuserUsing with async mode:
tacomail --async create-with-session
# Or with the alias:
tacomail --async newWait for emails:
# After creating with session, wait for incoming email
EMAIL="x7k9m2@tacomail.de" # Replace with your generated email
tacomail wait $EMAIL
# Monitors inbox and waits for incoming email
# Displays: From, Subject, Body when email arrivesStep 1: Generate email address
tacomail create
# Output: x7k9m2@tacomail.deStep 2: Create session (REQUIRED for receiving emails)
tacomail create-session x7k9m2@tacomail.de
# Output: Session created, expires at [timestamp]Step 3: Wait for emails
tacomail wait x7k9m2@tacomail.de
# Monitors inbox and waits for incoming email
# Displays: From, Subject, Body when email arrives# Generate email and create session
EMAIL=$(tacomail create | grep -oP 'Generated Email:' | cut -d' ' -f2)
tacomail create-session $EMAIL
# Monitor inbox for incoming emails
tacomail wait $EMAIL --timeout 60To receive emails, you can use either approach:
- โ
tacomail create-with-session- Generate email AND create session in one command (or usetacomail new- short alias) - โ
tacomail wait <email>- Monitor inbox for incoming emails
- โ
tacomail create- Generate email address - โ
tacomail create-session <email>- Create session (REQUIRED) - โ
tacomail wait <email>- Monitor inbox for incoming emails
The create-with-session command (and its short alias new) provides several advantages:
- โก Faster workflow: One command instead of two
- ๐ฏ Reduced errors: No need to copy-paste email between commands
- ๐ Complete information: Shows both email and session details at once
- ๐ Works in both modes: Supports both sync and async clients
- ๐จ Better UX: Clear next steps displayed after creation
- โ๏ธ Flexible options: Still supports domain and username customization
Workflow 1: Quick setup for testing
# Create and start receiving emails immediately
tacomail new # or: tacomail create-with-session
tacomail wait <generated-email>Workflow 2: Automated script
#!/bin/bash
# Get email and session (using the short alias)
EMAIL=$(tacomail new 2>&1 | grep -oP '\S+@\S+')
echo "Created: $EMAIL"
# Monitor for emails (timeout 60s)
tacomail wait $EMAIL --timeout 60Workflow 3: Specific domain for testing
# Use a specific domain if your service requires it
tacomail new --domain tacomail.de # or: tacomail create-with-session --domain tacomail.de
tacomail list <generated-email>You can check your inbox before waiting:
tacomail list x7k9m2@tacomail.de
# Shows all emails already in inboxfrom tacomail import TacomailClient
with TacomailClient() as client:
# Get a random email address
username = client.get_random_username()
domains = client.get_domains()
email_address = f"{username}@{domains[0]}"
# Create a session to receive emails (required for API v2)
session = client.create_session(username, domains[0])
print(f"Session expires at: {session.expires}")
# Wait for an email to arrive
email = client.wait_for_email(email_address, timeout=30)
if email:
print(f"From: {email.from_.address}")
print(f"Subject: {email.subject}")
print(f"Body: {email.body.text}")import asyncio
from tacomail import AsyncTacomailClient
async def main():
async with AsyncTacomailClient() as client:
# Get a random email address
username = await client.get_random_username()
domains = await client.get_domains()
email_address = f"{username}@{domains[0]}"
# Create a session to receive emails (required for API v2)
session = await client.create_session(username, domains[0])
# Wait for an email with specific subject
def filter_email(email):
return email.subject == "Welcome!"
email = await client.wait_for_email_filtered(
email_address,
filter_fn=filter_email,
timeout=30
)
if email:
print(f"Found email: {email.subject}")
asyncio.run(main())TacomailClient: Synchronous client for Tacomail APIAsyncTacomailClient: Asynchronous client for Tacomail APIEmail: Dataclass representing an email messageEmailAddress: Dataclass for email addressesEmailBody: Dataclass for email contentAttachment: Dataclass for email attachmentsSession: Dataclass for inbox session information
Both sync and async clients provide these methods:
create_session(username, domain): Create an inbox session to receive emailsdelete_session(username, domain): Delete an inbox sessionget_random_username(): Generate a random usernameget_domains(): Get list of available domainsget_random_address(): Get a complete random email addressget_inbox(address, limit=None): Get recent emailsget_email(address, mail_id): Get a specific emailget_attachments(address, mail_id): Get email attachmentsdownload_attachment(address, mail_id, attachment_id): Download an attachmentdelete_email(address, mail_id): Delete a specific emaildelete_inbox(address): Delete all emails in an inboxwait_for_email(address, timeout=30, interval=2): Wait for new emailwait_for_email_filtered(address, filter_fn, timeout=30, interval=2): Wait for email matching criteria
- Python โฅ 3.12
- httpx โฅ 0.28.0
# Install development dependencies
pip install -e ".[dev]"The test suite uses Postmark to send real test emails to the Tacomail addresses. This ensures the library works with actual email delivery.
- Sign up for a Postmark account
- Create a
.envfile in the project root with your credentials:
# .env
POSTMARK_API_KEY=your_postmark_api_key_here
SENDER_EMAIL=your_email_address_here # The verified sender email in PostmarkThen run the tests:
pytest
# Run linter
ruff check .- Tacomail Service: https://tacomail.de/
- Tacomail Repository: oskar2517/tacomail
- Tacomail API Documentation: API.md