Skip to main content

A Python client for the Shoutbox Email API

Project description

Header

Quickstart Docs

Language & Framework guides

Next.js - Typescript - Javascript - Python - PHP - Laravel - Go

Shoutbox.net Developer API - Python Library

Shoutbox.net is a Developer API designed to send transactional emails at scale. This documentation covers all Python integration methods, from direct API calls to full framework integration.

Setup

For these integrations to work, you will need an account on Shoutbox.net. You can create and copy the required API key on the Shoutbox.net dashboard!

The API key is required for any call to the Shoutbox.net backend; for SMTP, the API key is your password and 'shoutbox' the user to send emails.

Integration Methods

There are four main ways to integrate with Shoutbox in Python:

  1. Direct API calls (minimal dependencies)
  2. Using our Python library with pip
  3. SMTP integration
  4. Web framework integration (Flask/Django)

1. Direct API Integration (Minimal Dependencies)

If you want minimal dependencies, you can make direct API calls using requests:

import requests

# Your API key from Shoutbox.net
api_key = 'your-api-key-here'

# Prepare email data
data = {
    'from': 'sender@example.com',
    'to': 'recipient@example.com',
    'subject': 'Test Email',
    'html': '<h1>Hello!</h1><p>This is a test email.</p>',
    'name': 'Sender Name',
    'reply_to': 'reply@example.com'
}

# Make the API call
response = requests.post(
    'https://api.shoutbox.net/send',
    headers={
        'Authorization': f'Bearer {api_key}',
        'Content-Type': 'application/json'
    },
    json=data
)

# Handle the response
if response.status_code >= 200 and response.status_code < 300:
    print("Email sent successfully!")
else:
    print(f"Failed to send email. Status code: {response.status_code}")

Direct API Features

  • Minimal dependencies (only requests)
  • Simple implementation
  • Full control over the request
  • Lightweight integration
  • Suitable for simple implementations

2. Python Library with pip

Installation

pip install shoutboxnet

2.1 API Client Usage

The API client provides an object-oriented interface to the REST API:

from shoutbox import ShoutboxClient, Email, EmailAddress, Attachment

# Initialize client
api_key = os.getenv('SHOUTBOX_API_KEY') or 'your-api-key-here'
client = ShoutboxClient(api_key)

try:
    # Basic email
    email = Email(
        from_email="sender@example.com",
        to="recipient@example.com",
        subject="Test Email",
        html="<h1>Hello!</h1><p>This is a test email.</p>",
        reply_to="reply@example.com"
    )

    print(client.send(email))

    # Email with attachments
    email_with_attachments = Email(
        from_email="sender@example.com",
        to="recipient@example.com",
        subject="Test Email with Attachments",
        html="<h1>Hello!</h1><p>This email includes attachments.</p>",
        attachments=[
            # Just provide the filepath - content and type are handled automatically
            Attachment(filepath="path/to/document.pdf"),
            Attachment(filepath="path/to/spreadsheet.xlsx")
        ]
    )

    print(client.send(email_with_attachments))

    # You can still attach content directly if needed
    attachment = Attachment(
        filename='custom.txt',
        content=b"Custom content",
        content_type='text/plain'
    )

    email_with_custom = Email(
        from_email="sender@example.com",
        to="recipient@example.com",
        subject="Test Email with Custom Attachment",
        html="<h1>Hello!</h1><p>This email includes a custom attachment.</p>",
        attachments=[attachment]
    )

    print(client.send(email_with_custom))

except Exception as e:
    print(f"Error: {str(e)}")

2.2 SMTP Client Usage

The SMTP client provides an alternative way to send emails:

from shoutbox import SMTPClient, Email

client = SMTPClient('your-api-key-here')

try:
    # Multiple recipients
    email = Email(
        from_email="sender@example.com",
        to=["recipient1@example.com", "recipient2@example.com"],
        subject="Test Email",
        html="<h1>Hello!</h1><p>This is a test email.</p>",
        headers={
            'X-Custom-Header': 'Custom Value',
            'X-Priority': '1'
        }
    )

    print(client.send(email))

except Exception as e:
    print(f"Error: {str(e)}")

Library Features

  • Type-safe email options
  • Built-in error handling
  • Simple file attachment support (just provide filepath)
  • Custom headers support
  • Multiple recipient types (to, cc, bcc)
  • Choice between API and SMTP clients

3. Web Framework Integration

Flask Integration

from flask import Flask
from shoutbox import ShoutboxClient, Email

app = Flask(__name__)
client = ShoutboxClient(api_key='your-api-key')

@app.route('/send-email', methods=['POST'])
def send_email():
    email = Email(
        from_email="your-app@domain.com",
        to=request.json['to'],
        subject=request.json['subject'],
        html=request.json['html']
    )

    result = client.send(email)
    return {'success': True}

Django Integration

  1. Add configuration to settings.py:
SHOUTBOX_API_KEY = 'your-api-key'
  1. Usage example:
from shoutbox import ShoutboxClient, Email

client = ShoutboxClient()

def send_notification(request):
    email = Email(
        from_email="your-app@domain.com",
        to="recipient@example.com",
        subject="Notification",
        html="<h1>New notification</h1>"
    )

    client.send(email)
    return JsonResponse({'success': True})

Development

  1. Clone the repository:
git clone https://github.com/shoutboxnet/python.git
  1. Install dependencies:
pip install -r requirements-dev.txt
  1. Run tests:
make test

Support

  • GitHub Issues for bug reports
  • Email support for critical issues
  • Documentation for guides and examples
  • Regular updates and maintenance

License

This library is licensed under the MIT License. See the LICENSE file for details.

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

shoutboxnet-0.1.7.tar.gz (348.4 kB view details)

Uploaded Source

Built Distribution

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

shoutboxnet-0.1.7-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file shoutboxnet-0.1.7.tar.gz.

File metadata

  • Download URL: shoutboxnet-0.1.7.tar.gz
  • Upload date:
  • Size: 348.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.2

File hashes

Hashes for shoutboxnet-0.1.7.tar.gz
Algorithm Hash digest
SHA256 3173a2d9e9653904ec40f03f6d3dfc3bbde4f63299d19e60ab577587252bdc29
MD5 8f0009ad81bf0690b3c5d74a3b88c38d
BLAKE2b-256 c15c19279af97b7147f5f7bc6ecc9b48fadbc9952288c644355f07cd6c77b4f9

See more details on using hashes here.

File details

Details for the file shoutboxnet-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: shoutboxnet-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 9.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.2

File hashes

Hashes for shoutboxnet-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 08c58c64456380dc59826000fa21a9fdfbf613fed27cdb6789a0018a8e14379a
MD5 45b64031f84e0195b651ac7566e9339d
BLAKE2b-256 537b59a47fac60cb63757ec2ffcab0c3766f8d64f05f56938f6a9f74fa940a89

See more details on using hashes here.

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