Skip to main content

Official MailGlyph Python SDK

Project description

MailGlyph Python SDK

CI Release Please Publish to PyPI

Official Python SDK for the MailGlyph API.

Installation

pip install mailglyph

Quick Start (Sync)

from mailglyph import MailGlyph

client = MailGlyph("sk_your_api_key")

Quick Start (Async)

from mailglyph import AsyncMailGlyph

client = AsyncMailGlyph("sk_your_api_key")

Emails

from mailglyph import MailGlyph

client = MailGlyph("sk_your_api_key")

result = client.emails.send(
    to="user@example.com",
    from_={"name": "My App", "email": "hello@myapp.com"},
    subject="Welcome!",
    body="<h1>Hello {{name}}</h1>",
    text="Hello {{name}}",
    data={"name": "John"},
)

# Omit `text` to let MailGlyph auto-generate plain text from HTML `body`.
html_only_result = client.emails.send(
    to="user@example.com",
    from_="hello@myapp.com",
    subject="HTML Only",
    body="<h1>Hello</h1><p>This will get text/plain fallback.</p>",
)

# Set text="" to opt out of text/plain generation.
opt_out_result = client.emails.send(
    to="user@example.com",
    from_="hello@myapp.com",
    subject="No Plain Text Part",
    body="<h1>Hello</h1>",
    text="",
)

verification = client.emails.verify("user@example.com")
print(verification.valid, verification.is_random_input)

Events

from mailglyph import MailGlyph

tracker = MailGlyph("pk_your_public_key")
tracker.events.track(
    email="user@example.com",
    event="purchase",
    data={"product": "Premium", "amount": 99},
)

client = MailGlyph("sk_your_api_key")
names = client.events.get_names()

Contacts

from mailglyph import MailGlyph

client = MailGlyph("sk_your_api_key")

contacts = client.contacts.list(limit=50)
contact = client.contacts.create(email="new@example.com", data={"plan": "premium"})
client.contacts.update(contact.id, subscribed=False)
client.contacts.delete(contact.id)
count = client.contacts.count()

Segments

from mailglyph import MailGlyph

client = MailGlyph("sk_your_api_key")

segment = client.segments.create(
    name="Premium Users",
    condition={
        "logic": "AND",
        "groups": [
            {
                "filters": [
                    {"field": "data.plan", "operator": "equals", "value": "premium"}
                ]
            }
        ],
    },
    track_membership=True,
)
members = client.segments.list_contacts(segment.id, page=1)
added = client.segments.add_members(segment.id, emails=["alice@example.com", "bob@example.com"])
removed = client.segments.remove_members(segment.id, emails=["bob@example.com"])

Campaigns

from mailglyph import MailGlyph

client = MailGlyph("sk_your_api_key")

campaign = client.campaigns.create(
    name="Product Launch",
    subject="Introducing our new feature!",
    body="<h1>Big news!</h1><p>Check out our latest feature.</p>",
    from_email="hello@myapp.com",
    audience_type="ALL",
)

campaigns_page = client.campaigns.list(page=1, page_size=20, status="DRAFT")
client.campaigns.send(campaign.id, scheduled_for="2026-03-01T10:00:00Z")
client.campaigns.test(campaign.id, email="preview@myapp.com")
stats = client.campaigns.stats(campaign.id)
client.campaigns.cancel(campaign.id)

Async Example

import asyncio

from mailglyph import AsyncMailGlyph


async def main() -> None:
    async with AsyncMailGlyph("sk_your_api_key") as client:
        verification = await client.emails.verify("user@example.com")
        print(verification.valid)


asyncio.run(main())

Configuration

from mailglyph import MailGlyph

client = MailGlyph(
    "sk_your_api_key",
    base_url="https://api.mailglyph.com",
    timeout=30.0,
    max_retries=3,
)

Development

pip install -e .[dev]
ruff check .
mypy src/
pytest
hatch build

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

mailglyph-2.1.0.tar.gz (30.2 kB view details)

Uploaded Source

Built Distribution

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

mailglyph-2.1.0-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file mailglyph-2.1.0.tar.gz.

File metadata

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

File hashes

Hashes for mailglyph-2.1.0.tar.gz
Algorithm Hash digest
SHA256 39e5c63026753fde9db0bb66e0d8027c3fac24f72bbd07e23e7bd64f99dcd537
MD5 11d3a1bb58a9ce3c5cf9f21f3a8b45b4
BLAKE2b-256 1d4f3ffe767a319e7609774a0820af6b3797bcf333462f548bbb63967c28bcc5

See more details on using hashes here.

Provenance

The following attestation bundles were made for mailglyph-2.1.0.tar.gz:

Publisher: publish.yml on MailGlyph/mailglyph-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 mailglyph-2.1.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for mailglyph-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1862c0d759b7d14109bdf28045e6ab61bb57f48d9bad9e36a67f2e42dd89f152
MD5 9cd5979403f40fed1582f47917f05962
BLAKE2b-256 426623db7fcfbc07b8f75e3578806e242bfc2f005a36c67e739b2b180820da69

See more details on using hashes here.

Provenance

The following attestation bundles were made for mailglyph-2.1.0-py3-none-any.whl:

Publisher: publish.yml on MailGlyph/mailglyph-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