Skip to main content

herfy-email

Provider-abstracted email SDK for Herfy applications. Send transactional email using only your Control Center client_id and client_secret — no email provider credentials in app config.

Installation

pip install herfy-email[mailgun]

Usage

from herfy_email import HerfyEmailClient, AsyncHerfyEmailClient

# Sync
client = HerfyEmailClient.from_credentials(
    client_id="app_pettycash",
    client_secret="your_secret",
    control_center_url="https://cc.herfy.com",
)
client.send(to="user@herfy.com", subject="Hello", html="<p>Hello</p>", text="Hello")

# Async (FastAPI)
client = AsyncHerfyEmailClient.from_credentials(
    client_id="app_pettycash",
    client_secret="your_secret",
    control_center_url="https://cc.herfy.com",
)
await client.send(to="user@herfy.com", subject="Hello", html="<p>Hello</p>", text="Hello")

# From environment variables (CC_CLIENT_ID / AUTH_CLIENT_ID, CC_CLIENT_SECRET / AUTH_CLIENT_SECRET, CC_URL / CONTROL_CENTER_URL)
client = HerfyEmailClient.from_env()

How it works

  1. SDK authenticates with Control Center via POST /api/app-auth/token (cached, TTL 300s)
  2. SDK fetches provider config from GET /api/config/email (cached for process lifetime)
  3. SDK calls the configured provider (Mailgun, SendGrid, …) directly

Switching email providers requires only a Control Center env-var change — zero app changes.

Provider support

Provider Extra
Mailgun pip install herfy-email[mailgun]
SendGrid pip install herfy-email[sendgrid]

Control Center configuration

EMAIL_PROVIDER=mailgun
MAILGUN_API_KEY=key-xxxxxxxxxxxxxxxxxxxxxxxx
MAILGUN_DOMAIN=mg.herfy.com
MAILGUN_FROM_ADDRESS=noreply@herfy.com

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

herfy_email-1.1.0.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

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

herfy_email-1.1.0-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

Details for the file herfy_email-1.1.0.tar.gz.

File metadata

  • Download URL: herfy_email-1.1.0.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for herfy_email-1.1.0.tar.gz
Algorithm Hash digest
SHA256 c4138763839166e27220f07664b6b3d00d740a4361d4f3c516f7a7cf0a0ae76c
MD5 168d9f639339d3cf3f04d5f89ba77e91
BLAKE2b-256 cd67db451f689c846f59384cd7cb7cb05bb8d6d144cf4a9ba03b33539c5ed3fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for herfy_email-1.1.0.tar.gz:

Publisher: publish-email-sdk.yml on Herfy-Food-Services/herfy-shared-library

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

File details

Details for the file herfy_email-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: herfy_email-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for herfy_email-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c412ab33f728e52cdd8b1ca888c18bfc4bff11e60729f8815f9f8eab7762850f
MD5 3c28174f74df086477b5a9b7932bdd9e
BLAKE2b-256 103feafb04bc4c66f988adfc2dc14837de0f70aa0982bcb74f3ac622fb362ad1

See more details on using hashes here.

Provenance

The following attestation bundles were made for herfy_email-1.1.0-py3-none-any.whl:

Publisher: publish-email-sdk.yml on Herfy-Food-Services/herfy-shared-library

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

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 files

1.0.1

2 files

1.0.0

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page