Troubleshooting Laravel Mailgun integration

I’m having a hard time getting Mailgun to work with my Laravel 5.4 project. I’ve followed the docs but it’s not going smoothly. Here’s what I’ve done so far:

  • Installed Guzzle
  • Set up my config/services.php and .env files with Mailgun info
  • Set the mail driver to Mailgun in config/mail.php
  • Verified my email with Mailgun
  • Cleared config cache

When I try to send an email, I don’t get any errors. Mail::failures() returns nothing. I’ve tried logging and debugging but I’m not seeing any helpful info.

Here’s a basic example of what I’m trying:

try {
    Mail::raw('Hello', function($message) {
        $message->to('[email protected]', 'Me');
        $message->subject('Test');
    });
} catch (Exception $e) {
    echo $e->getMessage();
}

I’m not sure what else to check. Any ideas on how to figure out why it’s not working? Thanks for any help!

Have you considered using a mail trap service like Mailtrap.io for local testing? It’s a handy tool that intercepts outgoing emails in development environments. This way, you can verify if your Laravel app is actually sending emails without worrying about Mailgun configuration issues.

Also, double-check your Mailgun domain verification. Sometimes, the DNS records don’t propagate immediately, causing silent failures. If you’re using a custom domain, ensure all required DNS records (SPF, DKIM, CNAME) are set up correctly.

Lastly, try implementing a custom transport driver for Mailgun. This gives you more control over the sending process and can help pinpoint where things are going wrong. Laravel’s documentation has a guide on creating custom mail transport drivers that might be worth exploring.

hey mate, i had similar issues. check ur firewall settings - sometimes they block outgoing mail. also, try using a test api key from mailgun instead of ur real one. if that works, ur main key might be borked. good luck!

I’ve been down this road before with Laravel and Mailgun, and it can be tricky to troubleshoot. One thing that helped me was enabling debug mode in Laravel to get more detailed error messages. Just set APP_DEBUG=true in your .env file.

Another step I’d recommend is double-checking your Mailgun domain settings. Make sure you’re using the correct domain and API key in your config. Sometimes the sandbox domain won’t work as expected.

If those don’t help, try using Mailgun’s API directly (without Laravel’s Mail facade) to isolate if it’s a Laravel config issue or a Mailgun problem. You can use Guzzle to make a simple POST request to Mailgun’s API endpoint.

Lastly, check your server’s outgoing ports. Some hosts block port 25, which can cause silent failures with SMTP. You might need to use a different port or switch to the API method.

Hope this helps point you in the right direction!