Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.mailglyph.com/llms.txt

Use this file to discover all available pages before exploring further.

Use a secret key client for all email methods.
from mailglyph import MailGlyph

client = MailGlyph("sk_your_secret_key")

Send with basic HTML (emails.send)

result = client.emails.send(
    to="user@example.com",
    from_={"name": "MailGlyph Demo", "email": "hello@your-verified-domain.com"},
    subject="Welcome",
    body="<h1>Hello</h1><p>Your SDK setup is working.</p>",
)

print(result.timestamp)
print(result.emails[0].email)

Send to multiple recipients

to supports strings, recipient objects, or both:
client.emails.send(
    to=["one@example.com", {"name": "Two", "email": "two@example.com"}],
    from_="hello@your-verified-domain.com",
    subject="Product update",
    body="<p>New features are live.</p>",
)

Send with template and data

client.emails.send(
    to="user@example.com",
    from_="hello@your-verified-domain.com",
    template="tmpl_123",
    data={"firstName": "John", "plan": "premium"},
)

Send with attachments

Attachment content should be Base64-encoded:
client.emails.send(
    to="user@example.com",
    from_="billing@your-verified-domain.com",
    subject="Your invoice",
    body="<p>Invoice attached.</p>",
    attachments=[
        {
            "filename": "invoice.pdf",
            "content": "JVBERi0xLjQKJ...",
            "contentType": "application/pdf",
        }
    ],
)

Send with advanced options

client.emails.send(
    to={"name": "Jane Doe", "email": "jane@example.com"},
    from_={"name": "Growth Team", "email": "hello@your-verified-domain.com"},
    subject="Release notes",
    body="<p>Monthly update.</p>",
    reply="support@your-verified-domain.com",
    name="Monthly newsletter",
    subscribed=True,
    headers={"X-Campaign-Id": "monthly-2026-03"},
)

Verify an email address (emails.verify)

verification = client.emails.verify("user@gmail.com")

print(verification.valid)
print(verification.is_random_input)
print(verification.reasons)

Handle typo suggestions

verification = client.emails.verify("user@gmial.com")

if verification.is_typo and verification.suggested_email:
    print("Did you mean:", verification.suggested_email)

Async equivalents

AsyncMailGlyph exposes the same method names and parameters:
from mailglyph import AsyncMailGlyph


async def run() -> None:
    async with AsyncMailGlyph("sk_your_secret_key") as client:
        await client.emails.send(
            to="user@example.com",
            from_="hello@your-verified-domain.com",
            subject="Hello",
            body="<p>Async send</p>",
        )
        verification = await client.emails.verify("user@gmail.com")
        print(verification.valid)
See full endpoint details in the Send email API reference and Verify email API reference.