Skip to main content

JetEmail Python SDK

The official Python SDK for JetEmail transactional email.

Installation

pip install jetemail

Quick Start

from jetemail import JetEmail, SendEmailOptions

client = JetEmail(api_key="your_api_key")

result = client.emails.send(
    SendEmailOptions(
        from_="you@yourdomain.com",
        to="recipient@example.com",
        subject="Hello from JetEmail",
        html="<p>Welcome!</p>",
    )
)

print(result["id"])

Send an Email

from jetemail import JetEmail, SendEmailOptions, Attachment

client = JetEmail(api_key="your_api_key")

client.emails.send(
    SendEmailOptions(
        from_="You <you@yourdomain.com>",
        to=["alice@example.com", "bob@example.com"],
        subject="Monthly Report",
        html="<h1>Report</h1><p>See attached.</p>",
        text="Report - see attached.",
        cc="manager@example.com",
        bcc="archive@example.com",
        reply_to="support@yourdomain.com",
        headers={"X-Entity-Ref-ID": "report-2025-01"},
        attachments=[
            Attachment.from_path("/path/to/report.pdf"),
            Attachment.from_content("raw,csv,data", "data.csv"),
        ],
    )
)

Send Batch Emails

Send up to 100 emails in a single API call:

from jetemail import JetEmail, SendEmailOptions

client = JetEmail(api_key="your_api_key")

emails = [
    SendEmailOptions(
        from_="you@yourdomain.com",
        to=recipient,
        subject="Hello!",
        html=f"<p>Hi {name}!</p>",
    )
    for name, recipient in [("Alice", "alice@example.com"), ("Bob", "bob@example.com")]
]

result = client.batch.send(emails)
print(result["summary"])

Webhook Verification

Verify incoming webhook signatures without a client instance:

from jetemail import verify_webhook
from jetemail.webhook_verification import WebhookSignatureVerificationFailed

try:
    verify_webhook(
        payload=request.body,             # raw bytes
        signature=request.headers["X-Webhook-Signature"],
        timestamp=request.headers["X-Webhook-Timestamp"],
        secret="your_webhook_secret",
        tolerance=300,                    # seconds (default)
    )
    # Signature is valid
except WebhookSignatureVerificationFailed as e:
    # Signature invalid or timestamp expired
    print(e)

Error Handling

from jetemail import JetEmail, SendEmailOptions, JetEmailError

client = JetEmail(api_key="your_api_key")

try:
    client.emails.send(
        SendEmailOptions(
            from_="you@yourdomain.com",
            to="recipient@example.com",
            subject="Test",
            html="<p>Hi</p>",
        )
    )
except JetEmailError as e:
    print(f"Status: {e.status_code}")
    print(f"Message: {e.message}")
    print(f"Response: {e.response}")

License

MIT

Release files for jetemail 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jetemail 0.1.0
File Size Uploaded
jetemail-0.1.0.tar.gz 9.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jetemail 0.1.0
File Interpreter ABI Platform
jetemail-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 17.8 kB

Release files / jetemail-0.1.0.tar.gz

Download URL jetemail-0.1.0.tar.gz
Size 9.4 kB
Tags Source
SHA-256 checksum
How to use checksums
7a1d18cc47ea60d4a8550033b2c7144d564785d082f7aef3b1b098ee18ca472e
BLAKE2b-256 checksum
How to use checksums
16a8efbe23c87efb07215d29a15386eac924743e2a4d9ae6bad2671e737de198
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 2, 2026.

Transparency log

Release files / jetemail-0.1.0-py3-none-any.whl

Download URL jetemail-0.1.0-py3-none-any.whl
Size 8.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
89b77d4bc806dfca27fd997bbb6a363056f83d06d3d8f7cb8f70fdc80d3b6871
BLAKE2b-256 checksum
How to use checksums
f2c5384dc529d1cb30ad3e1a3a56bbc07941f168a205751c05e41d89504cd30e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page