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.0.0.tar.gz (28.6 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.0.0-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for mailglyph-2.0.0.tar.gz
Algorithm Hash digest
SHA256 338157bd2dbbd7c52340bf12ff72df5acfa83cbddac0cb1cd3c7d6d9aadec219
MD5 8d06cec752a4c491648af1dad4a34187
BLAKE2b-256 ff80b059c50d03b1bf1946db2b7cac081ef6467550bf6d3806adb8825359855a

See more details on using hashes here.

Provenance

The following attestation bundles were made for mailglyph-2.0.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.0.0-py3-none-any.whl.

File metadata

  • Download URL: mailglyph-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 14.2 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.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 804ef3a43f1fcd58ad03c6796f0939a7b023b9fbd6bb5931441a1da5bd6d0f84
MD5 8be8ff4f24c729399c0f582b68f0021c
BLAKE2b-256 d80536ee9496c280da7fa4b01dd115dc3c89a12e101e22a8026af1fe0079f68e

See more details on using hashes here.

Provenance

The following attestation bundles were made for mailglyph-2.0.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