Laravel error when sending custom email address using smtp server
Stefan Bogdanescu
Founder & Senior Architect · 2026-06-29
Solving the SSL Handshake Nightmare: Why Your Custom SMTP Email Fails in Laravel
As a senior developer working with Laravel applications, configuring external services like SMTP for sending emails is a fundamental step. However, when dealing with custom or complex mail servers, unexpected connection errors can derail your workflow. You’ve encountered a frustrating error: SSL operation failed with code 1. OpenSSL Error messages: error:1408F10B:SSL routines:ssl3_get_record:wrong version number.
This post dives deep into why this specific error occurs when configuring SMTP in Laravel, especially when using custom email addresses, and provides a step-by-step guide to resolving the issue.
Understanding the Error: SSL Negotiation Failure
The error message you are seeing—wrong version number during an SSL operation—is not typically an error within your Laravel code itself, but rather a failure in the initial handshake between your PHP application (via OpenSSL) and the remote SMTP server (mail.propnex.sg).
In essence, this means the client and the server could not agree on the security protocol version (TLS/SSL) they should use to establish a secure connection.
Why Does This Happen?
When setting up an SMTP connection, there are several common reasons for this failure:
- Protocol Mismatch: The server might be expecting a modern TLS version (like TLS 1.2 or 1.3), but the underlying OpenSSL library or PHP configuration is attempting to negotiate an older or incompatible protocol.
- Authentication Format: Often, the issue lies in how you are supplying the
MAIL_USERNAMEandMAIL_PASSWORD. Many SMTP servers require a specific login format (e.g., separateuser@domain.comfor username and password) rather than using the full email address as the sole username. - Server Misconfiguration: The remote server might be improperly configured to handle SSL/TLS negotiation, leading to this generic error when the connection is initiated.
Debugging Your Laravel SMTP Configuration
Let's look closely at your configuration snippet:
MAIL_HOST=mail.propnex.sg
MAIL_PORT=587
MAIL_USERNAME=xx.xxxxx@propnex.sg // <-- Potential Issue Area
MAIL_PASSWORD=xxxxxxxx
MAIL_ENCRYPTION=sslThe primary suspect here is setting MAIL_USERNAME to the full email address (xx.xxxxx@propnex.sg). While some systems allow this, standard SMTP usually requires a dedicated login name and password for authentication.
Step 1: Verify SMTP Credentials with Your Provider
Before touching Laravel, you must confirm the exact credentials provided by your client (Propnex). Ask them specifically:
- What is the exact SMTP hostname?
- What is the correct SMTP port (587 or 465)?
- Does the login require a separate username and password, or can it use the full email address for authentication?
Step 2: Adjusting the Laravel Configuration
Based on common SMTP practices, try adjusting your configuration. If the server expects a standard username/password structure