10

I am trying to send notification mails from php through mail queue in laravel, as far as i can tell everything works fine, i have already tested configuration on my personal mail acc. but when i try sending mail through smtp server it fails with following error.

mail config in env. :

MAIL_DRIVER=smtp
MAIL_HOST= smtp.server.address
MAIL_PORT=25

mail config in mail.php :

'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.server.address'),
'port' => env('MAIL_PORT', 25),
'sendmail' => '/usr/sbin/sendmail -bs',
'stream' => [
    'ssl' => [
        'allow_self_signed' => true,
        'verify_peer' => false,
        'verify_peer_name' => false,
    ],
],
'markdown' => [
    'theme' => 'default',

    'paths' => [
        resource_path('views/vendor/mail'),
    ],
],
'pretend' => env('MAIL_PRETEND', false),

payload:

{"displayName":"cts\\Mail\\UnplanedNotification","job":"Illuminate\\Queue\\CallQueuedHandler@call","maxTries":null,"timeout":null,"timeoutAt":null,"data":{"commandName":"Illuminate\\Mail\\SendQueuedMailable","command":"O:34:\"Illuminate\\Mail\\SendQueuedMailable\":3:{s:8:\"mailable\";O:29:\"cts\\Mail\\UnplanedNotification\":22:{s:9:\"\u0000*\u0000rework\";a:21:{s:12:\"complaint_id\";i:4184;}}}s:6:\"locale\";N;s:4:\"from\";a:0:{}s:2:\"to\";a:1:{i:0;a:2:{s:4:\"name\";N;s:7:\"address\";s:20:\"hascicm.mh@gmail.com\";}}s:2:\"cc\";a:0:{}s:3:\"bcc\";a:0:{}s:7:\"replyTo\";a:0:{}s:7:\"subject\";N;s:11:\"\u0000*\u0000markdown\";N;s:7:\"\u0000*\u0000html\";N;s:4:\"view\";N;s:8:\"textView\";N;s:8:\"viewData\";a:0:{}s:11:\"attachments\";a:0:{}s:14:\"rawAttachments\";a:0:{}s:9:\"callbacks\";a:0:{}s:10:\"connection\";N;s:5:\"queue\";N;s:15:\"chainConnection\";N;s:10:\"chainQueue\";N;s:5:\"delay\";N;s:7:\"chained\";a:0:{}}s:5:\"tries\";N;s:7:\"timeout\";N;}"}}

Stacktrace:

Swift_TransportException: Expected response code 354 but got code "503", with message "503 5.5.2 Need rcpt command
" in /var/www/ctstest/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php:457
Stack trace:
#0 /var/www/ctstest/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(341): Swift_Transport_AbstractSmtpTransport->assertResponseCode('503 5.5.2 Need ...', Array)
#1 /var/www/ctstest/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php(305): Swift_Transport_AbstractSmtpTransport->executeCommand('DATA\r\n', Array, Array, false, NULL)
#2 /var/www/ctstest/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(390): Swift_Transport_EsmtpTransport->executeCommand('DATA\r\n', Array, Array)
#3 /var/www/ctstest/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(497): Swift_Transport_AbstractSmtpTransport->doDataCommand(Array)
#4 /var/www/ctstest/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(516): Swift_Transport_AbstractSmtpTransport->doMailTransaction(Object(Swift_Message), 'deamon_do_not_r...', Array, Array)
#5 /var/www/ctstest/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(206): Swift_Transport_AbstractSmtpTransport->sendTo(Object(Swift_Message), 'deamon_do_not_r...', Array, Array)
#6 /var/www/ctstest/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mailer.php(71): Swift_Transport_AbstractSmtpTransport->send(Object(Swift_Message), Array)
#7 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Mail/Mailer.php(464): Swift_Mailer->send(Object(Swift_Message), Array)
#8 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Mail/Mailer.php(248): Illuminate\Mail\Mailer->sendSwiftMessage(Object(Swift_Message))
#9 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Mail/Mailable.php(148): Illuminate\Mail\Mailer->send('emails.unplanne...', Array, Object(Closure))
#10 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Support/Traits/Localizable.php(18): Illuminate\Mail\Mailable->Illuminate\Mail\{closure}()
#11 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Mail/Mailable.php(149): Illuminate\Mail\Mailable->withLocale(NULL, Object(Illuminate\Translation\Translator), Object(Closure))
#12 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Mail/SendQueuedMailable.php(52): Illuminate\Mail\Mailable->send(Object(Illuminate\Mail\Mailer))
#13 [internal function]: Illuminate\Mail\SendQueuedMailable->handle(Object(Illuminate\Mail\Mailer))
#14 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(29): call_user_func_array(Array, Array)
#15 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#16 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#17 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Container/Container.php(564): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#18 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(94): Illuminate\Container\Container->call(Array)
#19 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}(Object(Illuminate\Mail\SendQueuedMailable))
#20 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Mail\SendQueuedMailable))
#21 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(98): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#22 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(49): Illuminate\Bus\Dispatcher->dispatchNow(Object(Illuminate\Mail\SendQueuedMailable), false)
#23 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(83): Illuminate\Queue\CallQueuedHandler->call(Object(Illuminate\Queue\Jobs\DatabaseJob), Array)
#24 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(326): Illuminate\Queue\Jobs\Job->fire()
#25 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(276): Illuminate\Queue\Worker->process('database', Object(Illuminate\Queue\Jobs\DatabaseJob), Object(Illuminate\Queue\WorkerOptions))
#26 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(118): Illuminate\Queue\Worker->runJob(Object(Illuminate\Queue\Jobs\DatabaseJob), 'database', Object(Illuminate\Queue\WorkerOptions))
#27 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(101): Illuminate\Queue\Worker->daemon('database', 'default', Object(Illuminate\Queue\WorkerOptions))
#28 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(85): Illuminate\Queue\Console\WorkCommand->runWorker('database', 'default')
#29 [internal function]: Illuminate\Queue\Console\WorkCommand->handle()
#30 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(29): call_user_func_array(Array, Array)
#31 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#32 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#33 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Container/Container.php(564): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#34 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Console/Command.php(179): Illuminate\Container\Container->call(Array)
#35 /var/www/ctstest/vendor/symfony/console/Command/Command.php(255): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#36 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Console/Command.php(166): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#37 /var/www/ctstest/vendor/symfony/console/Application.php(886): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#38 /var/www/ctstest/vendor/symfony/console/Application.php(262): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Queue\Console\WorkCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#39 /var/www/ctstest/vendor/symfony/console/Application.php(145): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#40 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Console/Application.php(89): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#41 /var/www/ctstest/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(122): Illuminate\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#42 /var/www/ctstest/artisan(37): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#43 {main}
Miro Hascic
  • 147
  • 1
  • 1
  • 8

9 Answers9

9

i had the same issue long time but i have fixed it

While you are in the local serve ie) xampp or wampp etc

MAIL_DRIVER=smtp


MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=test@gmail.com
MAIL_PASSWORD=password
MAIL_ENCRYPTION=ssl

but when you are going in live server

MAIL_DRIVER=sendmail


MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=test@gmail.com
MAIL_PASSWORD=password
MAIL_ENCRYPTION=ssl

Just Change the mail driver to sendmail I have no idea how its is working but it fixed my server-error-503

ManojKiran A
  • 5,896
  • 4
  • 30
  • 43
5

This is the .env config file:

    MAIL_DRIVER=smtp
    MAIL_HOST= smtp.server.address
    MAIL_PORT=25  
    MAIL_USERNAME=Your smtp username (if exists)
    MAIL_PASSWORD=Your smtp password (if exists)
    MAIL_ENCRYPTION=ssl
    MAIL_FROM_ADDRESS=your email smtp address
    MAIL_FROM_NAME=your name 

But you should check the correctly params of your smpt server. I can help you if you want.

Ziomikii
  • 61
  • 4
2

If you send a mail from a hostname same as the EMAIL_USERNAME in you .env and the mail doesn't exist in your host server. You get that error. i.e

If EMAIL_USERNAME: themail@yourhost.com then mail_from is something like this ->from('no-reply@yourhost.com') and no-reply@yourhost.com doesn't exist.

In Summary

To send emails from a mail address like "no-reply@yourhost.com" or any mail at all; it is important that you have created that mail on your server or cpanel else it throws the error: "503-All RCPT commands were rejected with this error: 503-Sender verify failed 503 Valid RCPT command must precede DATA"

Adedoyin Akande
  • 2,266
  • 1
  • 19
  • 21
2

The three most common causes of this error are:

  1. Your email server requires you to check email first before sending email. (Checking email first is one way your email provider manages the security of your email account.)
  2. Some email provider also check the sender address also, if sender email address doesn't exist then you will get a 503 error.
  3. Your email client isn’t set up for SMTP Authentication.

More often, Error 503 tells you that you need to set up SMTP Authentication in your email client.

In Laravel you can catch this error and can show an error message like this,

try {
  Mail::send('emails.contact-message', [
   'msg' => $request->body,
   'name' => $request->name,
   'email' => $request->email,

  ],

     function ($mail) use($request) {
       $mail->from($request->email, $request->name);
       $mail->to('support@domain.com')->subject('Contact Message');
     }

   );
 // Catch the error
 } catch(\Swift_TransportException $e){
    if($e->getMessage()) {
       dd($e->getMessage());
    }             
 }
STA
  • 30,729
  • 8
  • 45
  • 59
0

put the configuration details in .env file

ex.

MAIL_DRIVER=smtp
MAIL_HOST=smtp.server.address
MAIL_PORT=465
MAIL_USERNAME=username
MAIL_PASSWORD=password
MAIL_ENCRYPTION=null

then restart artisan and test

Jay Suchak
  • 172
  • 1
  • 10
0

I faced same issue, and solved it by changing the port.

If you are using SSL or TLS, Use 587 as port instead of 25.

hope help.

Ahmad
  • 507
  • 1
  • 11
  • 22
  • This method fixes my issue, but downvoted (-1). I can't see any reason to downvote it so I upvote it. The downvoter(s) must be blind or something – Dika May 23 '22 at 03:54
0

Faced with the same issue and turned out that sender email didn't exist.

I was able to reproduce the issue as following:

$sender_email = "non.existing@gmail.com";
$receiver_email = "existing@gmail.com";

Mail::raw("Email content", function($message) use ($sender_email, $receiver_email) {
    $message->from($sender_email, config('app.name'));
    $message->to($receiver_email)->subject("Email subject");
});

This issue can also occur if you don't specify $message->from explicitly and MAIL_FROM_ADDRESS in app/config.php is either null or non-existing email.

Leonid Dashko
  • 3,657
  • 1
  • 18
  • 26
0

After waiting 3 days with no response. Had to start investigating because no one seems to be getting this error online.

Firstly The assumption of the reason for the error was wrong. i.e When "mail-from" value differs from "mail_username" it throws an error)

Secondly (The actual reason for the error) After correctly setting up your SMTP or mail driver of choice. Sending a mail with a "mail-from" different from your hostname e.g "no-reply@differenthost.com" and your hostname is yourhost.com The mail will always go through, however, sending a mail with a "mail-from" as such: "no-reply@yourhost.com" which is possibly different from your .env mail authentication i.e "MAIL_USERNAME" : This will throw an error if that mail account hasn't been set up on your hosted server or c-panel.

In Summary To send emails from a mail address like "no-reply@yourhost.com"; it is important that you have created that mail on your server else it throws the error : "503-All RCPT commands were rejected with this error: 503-Sender verify failed 503 Valid RCPT command must precede DATA "

MUHINDO
  • 788
  • 6
  • 10
-1

Change this line in .env file:

MAIL_HOST= smtp.server.address

to:

MAIL_HOST= mailrelay.vaillant.vhgroup.lan
Rouhollah Mazarei
  • 3,969
  • 1
  • 14
  • 20