Error: The "" scheme is not supported laravel

Stefan Bogdanescu

Founder & Senior Architect · 2026-06-29

Laravel Company

Debugging Mail Issues in Laravel: Solving the "Scheme Not Supported" Error

As a senior developer working with the Laravel ecosystem, dealing with mail delivery issues can sometimes feel like wading through confusing configuration errors. One common stumbling block developers encounter is related to setting up SMTP configurations, especially when testing locally with tools like MailHog.

Today, we are diving deep into a specific error: The " " scheme is not supported; supported schemes for mailer "smtp" are: "smtp", "smtps". This error typically surfaces when attempting to use Laravel's Mail facade, indicating a mismatch or incorrect configuration within your .env file regarding how the mailer protocol (SMTP) should be handled.

This post will break down why this error occurs and provide the definitive steps to resolve it, ensuring your emails are delivered smoothly.

Understanding the SMTP Scheme Conflict

The error message is quite explicit: Laravel's underlying mailer component only recognizes two valid schemes for SMTP mailers: smtp or smtps. When you configure parameters that don't align with these recognized standards, the system throws this exception.

In your provided configuration snippet:

dotenv
MAIL_MAILER=smtp    
MAIL_HOST=localhost    
MAIL_PORT=1025    
MAIL_USERNAME=null    
MAIL_PASSWORD=null    
MAIL_ENCRYPTION=null    <-- This is often the source of the confusion when null is used

While setting MAIL_ENCRYPTION=null seems logical for local testing, the strict validation within the framework expects a specific value (or no value if encryption is explicitly disabled). The conflict arises because the configuration isn't fully satisfying the requirements for establishing an SMTP connection as defined by Laravel.

The Solution: Correcting Your Mail Configuration

To resolve this, we need to ensure that the MAIL_ENCRYPTION setting aligns with what your mail server expects, or explicitly define the scheme based on testing requirements.

Option 1: Using Plain SMTP (No Encryption)

For many local development setups using tools like MailHog, plain SMTP is sufficient and often avoids complex TLS handshake issues during initial testing. Try explicitly setting the encryption to null or ensuring it adheres strictly to the supported options.

Corrected .env Configuration Example:

dotenv
MAIL_MAILER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null  // Keeping this null for local testing simplicity
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"

If the above still fails, try explicitly setting it to smtp if the framework is interpreting null incorrectly during validation:

dotenv
MAIL_ENCRYPTION=smtp 

Note: In many modern Laravel setups, omitting encryption when using local testing environments defaults correctly, but forcing it resolves protocol ambiguity.

Option 2: Using Secured SMTP (STARTTLS/SSL)

If you are configuring a real service or need encrypted delivery (which is standard for production), you must use smtps. This tells the mailer to attempt a secure connection using the STARTTLS protocol.

Secured Configuration Example:

dotenv
MAIL_MAILER=smtp
MAIL_HOST=your.mailserver.com
MAIL_PORT=587         // Standard port for STARTTLS
MAIL_USERNAME=your_user
MAIL_PASSWORD=your_password
MAIL_ENCRYPTION=smtps  // Use smtps for secure connections

This approach aligns perfectly with the error message's supported schemes (smtp, smtps). When you use smtps, you are explicitly telling Laravel that you intend to use an encrypted SMTP connection, satisfying the validator.

Reviewing Your