sendmail 504 Gateway Time-out on laravel homestead

✔ Recommended Answer

Personally when in development I like to use the log driver. This writes any emails sent into the storage/logs/ log file. I find this more convenient as it totally ensures no mail is accidentally sent when testing.

If you did want to actually send mail then I'd suggest mailgun, its free for 10,000 emails every month and I use this for every app I've built at work. Super quick and convenient, also includes tracking, delivery confirmation, etc.

After you've signed up you'll want to setup a new domain which will give you several credentials you'll need to add to your config/services.php, those being your domain and API key.

You'll then need to install guzzle for your application (this is need as mailgun uses a HTTP API to send email, which is much quicker than SMTP and traditional mail transport options).

composer require "guzzlehttp/guzzle": "~5.3|~6.0"

The final thing would to then be set your mail driver to mailgun and you should be well on your way.

Edit: Looking through the config files of laravel/lumen-framework doesn't look like its possible to be able to supply the relevant information to be able to use mailgun, or any service that requires information from the services.php config file as this isn't included in lumen for some reason.


Answered By: Wader

Method #2

A 504 Gateway Time-out error on Laravel Homestead when using sendmail could be caused by a few different factors, including:

  1. Large email attachments: If you are trying to send an email with a large attachment, it may take longer for the server to process and send the email, which could result in a timeout error.

  2. Slow network connection: If you have a slow network connection, it may take longer for the email to be sent, which could cause a timeout error.

  3. Server configuration issues: If there is an issue with the server configuration, it could cause the sendmail process to hang or take longer than expected, which could result in a timeout error.

To troubleshoot this issue, you can try the following steps:

  1. Check your email settings: Make sure that your email settings in Laravel Homestead are configured correctly. You can check the config/mail.php file to ensure that the SMTP settings are correct.

  2. Reduce the size of attachments: If you are sending large attachments, try reducing the size of the attachments or sending them separately to see if this resolves the issue.

  3. Increase the timeout setting: You can try increasing the timeout setting for sendmail to allow more time for the process to complete. You can do this by adding the following line to your php.ini file:

    default_socket_timeout = 180

    This will set the default socket timeout to 180 seconds (3 minutes). You can adjust the value as needed.

  4. Check server logs: Check the server logs for any error messages related to sendmail or the timeout error. This can help you identify the root cause of the issue and troubleshoot further.

  5. Use a different email provider: If you are unable to resolve the issue with sendmail, you can try using a different email provider such as Gmail or Mailgun. These providers have robust APIs that can be easily integrated with Laravel Homestead.


Most Popular

PhpStorm, return value is expected to be 'A', 'object' returned

Remove Unicode Zero Width Space PHP

Laravel file upload returns forbidden 403, file permission is 700 not 755