1

I'm currently using Laravel as my framework for a website.

Error Code:

Connection could not be established with host "live.smtp.mailtrap.io:587": stream_socket_client(): Unable to connect to live.smtp.mailtrap.io:587 (Connection refused)

I am trying to use 'MailTrap' to send an order form to client's email. I followed most of the instructions from online and made it work locally using php artisan serve.

But the problem is, when I deploy it to a web hosting server (GoDaddy Economy Linux Hosting with cPanel), the error code appears.

Here are the code snippets:

env:

MAIL_MAILER=smtp
MAIL_HOST=live.smtp.mailtrap.io
MAIL_PORT=587
MAIL_USERNAME=xxx
MAIL_PASSWORD=xxx
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="no-reply@website-name.com"
MAIL_FROM_NAME="${APP_NAME}"

config/mail.php:

<?php

return [


    'default' => env('MAIL_MAILER', 'smtp'),

    'mailers' => [
        'smtp' => [
            'transport' => 'smtp',
            'url' => env('MAIL_URL'),
            'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
            'port' => env('MAIL_PORT', 587),
            'encryption' => env('MAIL_ENCRYPTION', 'tls'),
            'username' => env('MAIL_USERNAME'),
            'password' => env('MAIL_PASSWORD'),
            'timeout' => null,
            'local_domain' => env('MAIL_EHLO_DOMAIN'),
        ],

        'ses' => [
            'transport' => 'ses',
        ],

        'mailgun' => [
            'transport' => 'mailgun',
            // 'client' => [
            //     'timeout' => 5,
            // ],
        ],

        'postmark' => [
            'transport' => 'postmark',
            // 'client' => [
            //     'timeout' => 5,
            // ],
        ],

        'sendmail' => [
            'transport' => 'sendmail',
            'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'),
        ],

        'log' => [
            'transport' => 'log',
            'channel' => env('MAIL_LOG_CHANNEL'),
        ],

        'array' => [
            'transport' => 'array',
        ],

        'failover' => [
            'transport' => 'failover',
            'mailers' => [
                'smtp',
                'log',
            ],
        ],
        
    ],

    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
        'name' => env('MAIL_FROM_NAME', 'Example'),
    ],

    'markdown' => [
        'theme' => 'default',

        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],

    'stream' => [
        'ssl' => [
            'allow_self_signed' => true,
            'verify_peer' => false,
            'verify_peer_name' => false,
        ],
    ],

];

Post Route:

Route::post('/SendOrder', [Controller::class, 'EmailOrder'])->name('sendorder');
Route::post('/SendEmail', [Controller::class, 'EmailContact'])->name('sendcontact');

Controller:

namespace App\Http\Controllers;

use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Support\Facades\Redirect;
use Spatie\Newsletter\Facades\Newsletter;
use Illuminate\Support\Facades\Mail;
use App\Mail\SendContact;
use App\Mail\SendOrder;

.
.
.

    /**
     * Summary of EmailContact
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\RedirectResponse
     */
    public function EmailContact(Request $request)
        {
            $contactName = $request->input('name');
            $contactEmail = $request->input('email');
            $contactNumber = $request->input('contact');
            $contactContent = $request->input('message');
            Mail::to('marketing@jpmarx.com')->send(new SendContact($contactName, $contactEmail, $contactNumber, $contactContent));
            return Redirect::route('ContactSuccess');
        }

    public function EmailOrder(Request $request)
        {
            $fullName = $request->input('orderName');
            $cusEmail = $request->input('orderEmail');
            $cusAddress = $request->input('orderAddress');
            $cusContact = $request->input('orderContact');
            $fbLink = $request->input('fblink');
            $craylingQuan = $request->input('craylingsQuantity');
            $juvenileQuan = $request->input('juvenilesQuantity');
            $breederType = $request->input('breederRadio');
            $breederQuan = $request->input('breeders');
            Mail::to('marketing@jpmarx.com')->send(new SendOrder($fullName, $cusEmail, $cusAddress,
            $cusContact, $fbLink, $craylingQuan, $juvenileQuan, $breederType, $breederQuan));
            return Redirect::route('ContactSuccess');
        }

I tried using all the available ports provided by Mailtrap such as 587, 2525, and 25. I also added a code snippet I got from a previous question in config file, but it didn't work.

'stream' => [
        'ssl' => [
            'allow_self_signed' => true,
            'verify_peer' => false,
            'verify_peer_name' => false,
        ],
    ],
Joundill
  • 6,828
  • 12
  • 36
  • 50
  • GoDaddy is pretty well known for not letting you use anybody else's email servers. You can use an API-based service like SES or Mailgun, or use a different host. Or better, both. – Alex Howansky Aug 09 '23 at 18:36

0 Answers0