Skip to main content

Official Python SDK for MailBreeze email platform

Project description

MailBreeze Python SDK

The official Python SDK for the MailBreeze email platform.

Features

  • Full async support - Built on httpx for modern async/await patterns
  • Type-safe - Complete type hints with Pydantic models
  • Automatic retries - Built-in retry logic with exponential backoff
  • Python 3.10+ - Modern Python with native type syntax

Installation

pip install mailbreeze

Quick Start

import asyncio
from mailbreeze import MailBreeze

async def main():
    client = MailBreeze(api_key="sk_live_xxx")

    # Send an email
    result = await client.emails.send(
        from_="hello@yourdomain.com",
        to="user@example.com",
        subject="Welcome!",
        html="<h1>Welcome to our platform!</h1>",
    )
    print(result.id)

asyncio.run(main())

Resources

Emails

# Send an email
result = await client.emails.send(
    from_="hello@yourdomain.com",
    to="user@example.com",
    subject="Hello",
    html="<p>Hello World!</p>",
)

# Send with a template
result = await client.emails.send(
    from_="hello@yourdomain.com",
    to=["user1@example.com", "user2@example.com"],
    template_id="welcome-template",
    variables={"name": "John", "plan": "Pro"},
)

# List emails
emails = await client.emails.list(status="delivered", page=1, limit=20)

# Get email details
email = await client.emails.get("email_xxx")

# Get statistics
stats = await client.emails.stats()

Contact Lists

# Create a list
list_ = await client.lists.create(
    name="Newsletter Subscribers",
    description="Weekly newsletter recipients",
)

# List all lists
lists = await client.lists.list()

# Get list stats
stats = await client.lists.stats("list_xxx")

Contacts

# Get contacts for a list
contacts = client.contacts("list_xxx")

# Create a contact
contact = await contacts.create(
    email="user@example.com",
    first_name="John",
    last_name="Doe",
    custom_fields={"company": "Acme Inc"},
)

# List contacts
result = await contacts.list(status="active", page=1, limit=50)

# Update a contact
updated = await contacts.update("contact_xxx", first_name="Jane")

# Delete a contact
await contacts.delete("contact_xxx")

Email Verification

# Verify a single email
result = await client.verification.verify("user@example.com")
print(result.is_valid)  # True

# Batch verification
batch = await client.verification.batch(
    emails=["user1@example.com", "user2@example.com"]
)

# Check batch status
status = await client.verification.get(batch.verification_id)

Automations

# Enroll a contact
enrollment = await client.automations.enroll(
    automation_id="auto_welcome",
    contact_id="contact_xxx",
    variables={"coupon_code": "WELCOME10"},
)

# List enrollments
enrollments = await client.automations.enrollments.list(status="active")

# Cancel an enrollment
await client.automations.enrollments.cancel("enroll_xxx")

Error Handling

from mailbreeze import (
    MailBreeze,
    MailBreezeError,
    AuthenticationError,
    ValidationError,
    NotFoundError,
    RateLimitError,
    ServerError,
)

try:
    await client.emails.send(...)
except ValidationError as e:
    print(f"Validation failed: {e.message}")
    print(f"Details: {e.details}")
except AuthenticationError:
    print("Invalid API key")
except RateLimitError as e:
    print(f"Rate limited. Retry after {e.retry_after} seconds")
except NotFoundError:
    print("Resource not found")
except ServerError as e:
    print(f"Server error: {e.status_code}")
except MailBreezeError as e:
    print(f"API error: {e.code} - {e.message}")

Requirements

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

mailbreeze-0.2.1.tar.gz (20.0 kB view details)

Uploaded Source

Built Distribution

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

mailbreeze-0.2.1-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

File details

Details for the file mailbreeze-0.2.1.tar.gz.

File metadata

  • Download URL: mailbreeze-0.2.1.tar.gz
  • Upload date:
  • Size: 20.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mailbreeze-0.2.1.tar.gz
Algorithm Hash digest
SHA256 69b9eedf519a05e5d6a78d16c9f98750b943e18050bcd3bf487fc6b86a5a4b10
MD5 4eb4801b2eaf75a9786a2cdc4fe718a7
BLAKE2b-256 6786bd7e884349e0467b742ce3fa407db5d246c70b91bab1cd319e80ed6384b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for mailbreeze-0.2.1.tar.gz:

Publisher: release.yml on MailBreeze/mailbreeze-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mailbreeze-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: mailbreeze-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 19.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mailbreeze-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c616784ebd2f46083ac8107b185be3e88d2e35bfe7481d79d0b94b05a74f9fba
MD5 dd1211ce4586109be73d788414379ce3
BLAKE2b-256 431f2f4015187f72b84b2584df12b0494e4a2512bec4c65c0b9e653b39919db2

See more details on using hashes here.

Provenance

The following attestation bundles were made for mailbreeze-0.2.1-py3-none-any.whl:

Publisher: release.yml on MailBreeze/mailbreeze-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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