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,
],
],