Skip to main content

mailrambo

Official Python client for the MailRambo email verification API.

One call answers one question - can I send to this address without bouncing? deliverable is True only when the mailbox is confirmed; catch-all, disposable and unverifiable addresses are False, with a reason you can branch on.

  • Sync and asyncio clients, typed, one dependency (httpx)
  • Automatic retries on 429/5xx with backoff
  • Retry-safe batches (idempotency keys added for you)
  • Free test keys (mr_test_...) - build and run CI without spending credits

Install

pip install mailrambo

Get a free API key (50 verifications/month, API on every plan) at mailrambo.com.

Quick start

from mailrambo import MailRambo

mr = MailRambo()  # reads MAILRAMBO_API_KEY

result = mr.verify("jane@acme.com")
if not result["deliverable"]:
    print("Don't send:", result["reason"])  # mailbox_not_found, disposable, catch_all, ...

Async

from mailrambo import AsyncMailRambo

async with AsyncMailRambo() as mr:
    result = await mr.verify("jane@acme.com")

Block fake signups (Django / FastAPI)

BLOCK = {"disposable", "mailbox_not_found", "invalid_syntax", "spamtrap"}

def is_allowed_signup(email: str) -> bool:
    try:
        return mr.verify(email)["reason"] not in BLOCK
    except MailRamboError:
        return True  # fail open: never lose a real user to a timeout

Full detail

r = mr.verify("jane@acme.com", detail=True)
r["detail"]["grade"]                 # "A"
r["detail"]["inbox_provider"]        # "Google Workspace"
r["detail"]["dns"]["dmarc_policy"]   # "reject"

Same price (1 credit).

Lists

rows = mr.verify_many(emails, name="Q4 import")   # any size, batches of 200, input order kept
good = [r["email"] for r in rows if r["deliverable"]]

# or manage batches yourself
batch_id = mr.create_batch(emails[:200], idempotency_key="import-42")["batch_id"]
batch = mr.wait_for_batch(batch_id)

Credits

mr.account()["credits_remaining"]  # free call

Errors

Every API error raises MailRamboError with status, code and message:

from mailrambo import MailRamboError

try:
    mr.verify(email)
except MailRamboError as e:
    if e.code == "insufficient_credits":
        ...  # top up at https://www.mailrambo.com/pricing
status code meaning
401 invalid_api_key, api_key_revoked Check your key
402 insufficient_credits, subscription_inactive Top up or reactivate
429 rate_limited Retried automatically, then raised
503 provider_unavailable Retried automatically; charged credits are refunded

Test mode

Create a mr_test_... key on the API Keys page. No credits are used, and the answer depends on the part before the @:

mr.verify("deliverable@example.com")  # True,  "mailbox_exists"
mr.verify("disposable@example.com")   # False, "disposable"
mr.verify("catch_all@example.com")    # False, "catch_all"
mr.verify("anything@example.com")     # False, "mailbox_not_found"

MIT License

Metadata

Release files for mailrambo 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mailrambo 0.1.0
File Size Uploaded
mailrambo-0.1.0.tar.gz 6.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mailrambo 0.1.0
File Interpreter ABI Platform
mailrambo-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 13.5 kB

Release files / mailrambo-0.1.0.tar.gz

Download URL mailrambo-0.1.0.tar.gz
Size 6.8 kB
Tags Source
SHA-256 checksum
How to use checksums
4ef965b9227b9a71d58447753accae387d9e384f870ffaf8af619a1cacdb69e0
BLAKE2b-256 checksum
How to use checksums
7ef911e859e8288cd1ef0c680bb9d89aba70e9b8c1ed1f60a9937d463e9d5d00
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.18

Release files / mailrambo-0.1.0-py3-none-any.whl

Download URL mailrambo-0.1.0-py3-none-any.whl
Size 6.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7dc3be2caed9e4bbce82f9fad2d5ec0dc0bd1e6cd44928e83b8f8e821c284a04
BLAKE2b-256 checksum
How to use checksums
520a4eb10bd1c5046dd87ca70d775227a819801198bc2bc4a56946fbe55b5943
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.18

Release history Release notifications | RSS feed

0.2.0

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page