{"library":"mailgun","title":"Python SDK for Mailgun","description":"The `mailgun` Python SDK provides a convenient interface for interacting with the Mailgun email API. It simplifies sending, receiving, and managing emails, domains, and webhooks programmatically. The library is actively maintained, with regular minor releases adding new API endpoint support and features like async client functionality. The current stable version is 1.6.0.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":["pip install mailgun"],"cli":null},"imports":["from mailgun.client import Client","from mailgun.client import AsyncClient"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom mailgun.client import Client\n\ndef send_simple_message():\n    api_key = os.environ.get('MAILGUN_API_KEY', 'YOUR_MAILGUN_API_KEY')\n    domain = os.environ.get('MAILGUN_DOMAIN', 'YOUR_MAILGUN_DOMAIN')\n    # Use the appropriate API base URL for your region (US or EU)\n    # For US: api_base_url = \"https://api.mailgun.net/v3\"\n    # For EU: api_base_url = \"https://api.eu.mailgun.net/v3\"\n    api_base_url = os.environ.get('MAILGUN_API_BASE_URL', \"https://api.mailgun.net/v3\")\n\n    if not api_key or not domain:\n        print(\"Please set MAILGUN_API_KEY and MAILGUN_DOMAIN environment variables.\")\n        return\n\n    client = Client(auth=(\"api\", api_key), api_url=f\"{api_base_url}/{domain}\")\n\n    try:\n        response = client.send_message(\n            from_email=\"Excited User <mailgun@{}>.format(domain)\",\n            to_emails=[\"test@example.com\"], # Replace with a verified recipient\n            subject=\"Hello from Mailgun Python SDK\",\n            text=\"Congratulations, you just sent an email with Mailgun Python SDK!\"\n        )\n        print(f\"Mailgun API response: {response.status_code} - {response.json()}\")\n    except Exception as e:\n        print(f\"An error occurred: {e}\")\n\nif __name__ == \"__main__\":\n    send_simple_message()\n","lang":"python","description":"This quickstart demonstrates how to initialize the Mailgun client and send a basic text email using environment variables for API key and domain. Ensure `MAILGUN_API_KEY`, `MAILGUN_DOMAIN`, and optionally `MAILGUN_API_BASE_URL` are set. Remember to replace `test@example.com` with an authorized recipient.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-15","installed_version":"1.0.2","pypi_latest":"1.7.0","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.5,"avg_import_s":0.63,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"mailgun","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.62,"mem_mb":11.6,"disk_size":"24.9M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"mailgun","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.7,"import_time_s":0.43,"mem_mb":11.6,"disk_size":"25M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"mailgun","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.8,"mem_mb":12.6,"disk_size":"27.5M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"mailgun","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.6,"import_time_s":0.68,"mem_mb":12.6,"disk_size":"28M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"mailgun","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.71,"mem_mb":12.3,"disk_size":"19.1M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"mailgun","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.3,"import_time_s":0.72,"mem_mb":12.3,"disk_size":"20M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"mailgun","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.7,"mem_mb":12.7,"disk_size":"18.5M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"mailgun","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.3,"import_time_s":0.67,"mem_mb":12.7,"disk_size":"19M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"mailgun","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.5,"mem_mb":9.5,"disk_size":"20.9M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"mailgun","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.5,"import_time_s":0.43,"mem_mb":9.5,"disk_size":"21M"}]}}