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.2.0.tar.gz (9.2 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.2.0-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for mailflat-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a4bb74fd39c2d4b5381703ef9008ad8418162a557688c254988a51031cf3ef0f
MD5 f2de36f9752b1201d9ecb6435c3ace7f
BLAKE2b-256 f3bd49d58c7c767f22dd77bd0f10fa0f26bf532840364c27b64e9406feb7e57a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mailflat-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 11.9 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3a17effe41d49ee160f14d0914e5c87ffd309f8075de96380f8644a8f8b1e4cd
MD5 74ae7b292498e6ff077f50cfa37c2166
BLAKE2b-256 b091499d3e70ad0d22d431198b24e1d9d1f8dfe77a86a76848e93c2c9c582541

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