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"
Links
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)
| File | Size | Uploaded | |
|---|---|---|---|
| mailrambo-0.1.0.tar.gz | 6.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|