Skip to main content

Official Python SDK for MailFlat — disposable, automation-friendly email inboxes with one-line OTP retrieval.

Project description

MailFlat — Python SDK

Official Python client for MailFlat: disposable, automation-friendly email inboxes with one-line OTP retrieval. Spin up a real inbox, read the verification code your app just sent, and move on — no flaky polling, no shared mailbox state.

pip install mailflat

Quickstart

from mailflat import MailFlat

mf = MailFlat(api_key="mf_live_...")  # or set MAILFLAT_API_KEY

# 1 · spin up a disposable inbox
inbox = mf.create(label="signup-test")
print(inbox.address)            # → signup-test-8f3@x7k2m.mailflat.net

# 2 · your app/browser submits the form using inbox.address ...

# 3 · grab the OTP (polls until it arrives or times out)
otp = inbox.wait_for_otp(timeout=30)
print(otp)                      # → "123456"

# inbox auto-clears in 2h — no cleanup needed (or call inbox.delete())

For AI agents

Hand an agent one API key and it spins up real inboxes on demand:

mf = MailFlat()  # reads MAILFLAT_API_KEY

inbox = mf.create(label="deep-research")
browser.fill("#email", inbox.address)
browser.click("Sign up")

otp = inbox.wait_for_otp(timeout=30)
browser.fill("#code", otp)

API

MailFlat(api_key=None, *, base_url="https://mailflat.net", timeout=30.0, max_retries=2)

Client. api_key falls back to the MAILFLAT_API_KEY environment variable. Use base_url for self-hosted / BYOD deployments. Supports use as a context manager (with MailFlat() as mf:).

  • create(*, prefix=None, label=None, subdomain=None, domain=None, retention_hours=None) -> Inbox — open a new inbox. create_inbox(...) is an alias.
  • list() -> list[Inbox] — inboxes opened with this key.
  • inbox(address) -> Inbox — attach to an existing address without a network call.

Inbox

  • .address — the email address.
  • .messages() -> list[Message] — all messages, newest first.
  • .latest() -> Message | None — most recent message.
  • .wait_for_otp(*, timeout=30, poll_interval=1.0) -> str — poll until an OTP arrives; returns the code.
  • .wait_for_message(*, timeout=30, poll_interval=1.0) -> Message — poll until any message arrives.
  • .send(to, *, subject="", body="", html=None) -> dict — send a DKIM-signed email from this inbox.
  • .delete() -> dict — delete the inbox and all its messages.

Message

.otp, .subject, .sender, .text, .html, .to_address, .direction, .received_at, .raw.

Errors

All errors subclass MailFlatError: AuthenticationError (401), PermissionError (403), NotFoundError (404), RateLimitError (429), APIError (other), OTPTimeoutError (no OTP before timeout), EncryptedInboxError (the inbox is end-to-end encrypted, so the server cannot read its contents — use a non-encrypted inbox for agent automation).

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 Distribution

mailflat-0.1.0.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mailflat-0.1.0-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file mailflat-0.1.0.tar.gz.

File metadata

  • Download URL: mailflat-0.1.0.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for mailflat-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4c96382f2e992e1b8eb3893ec3c6f1b86cfff1e9fb7cfbab42ef1d0a3f1ea2f5
MD5 7821e8b6c06cc7929d68d7b2b1edce0c
BLAKE2b-256 d9e3fb081eff17225acd9d2de2a90bfb7b3a38962bd2fa465135fa00517942f4

See more details on using hashes here.

File details

Details for the file mailflat-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mailflat-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for mailflat-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f5703baf4c34ebed55b434e3c382ad823fa2c2a46eb36d5b0203d9b1fcde8359
MD5 8d29a2a0af7ba48ba11b09b6f7a815e4
BLAKE2b-256 fa07cee6b7e9f3fe726bfa965853a4c43689bed95e565606b82be43c97bbf980

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page