A Laravel contact form should not claim success when email was never sent
A visitor submits a project inquiry and sees "Message sent." The application is configured with a log mailer, so the message was only written to a local log. The form's success message promises more than the configured transport did.
Separate preview transports from delivery
Use log or array transports during development. Keep production delivery settings explicit, and check that the intended mail transport is configured before accepting an inquiry as delivered.
Use an address belonging to your configured sending domain as the From address. Put the visitor's validated email in Reply-To. The visitor is asking for a reply, not authorizing your server to impersonate their mail provider.
Make the failure state useful
If the transport rejects the message, return a clear failure and show a direct email alternative. Keep the visitor's typed message on the page so they can recover. Never show a success notification from an unconditional finally block.
A transport accepting a message is not proof that the recipient read it, or even that it reached the inbox. Phrase the confirmation according to the result you can observe.
Test without sending real inquiries
Use a mail fake to assert recipient, reply-to, and content construction. Separately test the application branch for a failing transport. These tests answer different questions.
Also test invalid email input, excessive message length, rate limiting, and the spam-trap field if you use one. Do not put visitor messages or transport credentials in error logs.
The practical test is simple: deliberately break delivery in a safe environment and use the form yourself. The interface should tell the truth and provide a recovery path. Laravel's mail documentation explains transport configuration, reply-to addresses, and mail testing.