Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Mailgun Php

Mailgun Php Laravel Package

mailgun/mailgun-php

Official Mailgun PHP SDK (PSR-18/PSR-7 compatible) for sending email and managing Mailgun API features like domains, IPs/pools, analytics, and subaccounts. Works with your chosen HTTP client; supports US/EU endpoints.

View on GitHub
Deep Wiki
Context7

Mailgun's Official SDK for PHP

Frequently asked questions about Mailgun Php
How do I integrate this Mailgun SDK with Laravel’s built-in Mail driver for sending emails?
Replace Laravel’s default `mailgun` driver with a custom service using the SDK’s `messages()` module. Bind the SDK to Laravel’s container in `config/services.php` and override the mail driver in `config/mail.php` to use your custom service. This ensures full feature parity, including attachments and tracking.
What Laravel versions does this SDK officially support, and are there any PHP version conflicts?
The SDK requires PHP 7.4+, which aligns with Laravel 8+. For Laravel 10/11, test compatibility with `symfony/http-client` (Laravel’s default) to avoid version conflicts. Use Composer overrides if needed to align dependencies with Laravel’s vendor versions.
Can I use this SDK with Laravel’s queue system for async email sending or bulk operations?
Yes. Dispatch SDK calls (e.g., `messages()->send()`) as jobs using Laravel’s queues. For bulk operations like IP assignments, wrap SDK calls in a `ShouldQueue` job. This avoids rate limits and improves performance for high-volume tasks.
How do I handle API key management in Laravel—should I hardcode keys or use environment variables?
Store API keys in `.env` (e.g., `MAILGUN_API_KEY`) and inject them via Laravel’s config or service container. For multi-subaccount setups, dynamically resolve keys using config or a dedicated `MailgunKeyResolver` service tied to Laravel’s Auth system.
Does this SDK support Laravel’s event system for tracking Mailgun API calls (e.g., sent emails, IP changes)?
Yes. Dispatch custom events (e.g., `MailgunMessageSent`) after SDK calls. Use Laravel’s `Event` facade to trigger observers for logging, notifications, or analytics. Example: `event(new MailgunMessageSent($messageData));`
What’s the best way to mock Mailgun API responses in Laravel tests (e.g., for unit/feature tests)?
Use Laravel’s `Mockery` for in-memory mocks or `vcr/vcr` for recording/replaying HTTP interactions. For PSR-18 clients, mock the `Mailgun` factory to return canned responses. Example: `Mailgun::shouldReceive('messages')->andReturnSelf()->once()->send(...);`
How do I handle rate limits or transient failures (e.g., 429 errors) when using this SDK in Laravel?
Leverage Laravel’s `retry` helper or a custom retry decorator for SDK calls. For rate limits, queue retries with exponential backoff. Example: `retry(3, function () use ($mg) { $mg->messages()->send(...); });`
Can I use this SDK to manage Mailgun domains, IPs, or analytics in Laravel, and how does it compare to the native Mailgun driver?
Yes. The SDK provides full API access (domains, IPs, analytics) via modules like `ips()`, `metrics()`, and `domains()`. Unlike Laravel’s basic `mailgun` driver, this SDK supports advanced features like dynamic IP pools and subaccount management, making it ideal for production-grade workflows.
Are there performance considerations when hydrating large Mailgun API responses (e.g., analytics data) in Laravel?
For large datasets, use Laravel’s `Collection` or `ArrayHydrator` to chunk responses. Cache results in Redis or the file system to reduce API calls. Avoid eager-loading all SDK modules; lazy-load only what’s needed (e.g., `metrics()` only when analytics are required).
What alternatives exist for sending emails in Laravel, and why choose this Mailgun SDK over them?
Alternatives include Laravel’s native `mail` facade (SMTP-based) or third-party SDKs like `spatie/laravel-mailgun-driver`. This SDK stands out for its PSR-18/PSR-7 compliance, full API coverage (not just emails), and seamless Laravel integration (events, queues, config). It’s the official choice for Mailgun’s advanced features.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor
spatie/laravel-javascript-views