Do not speak Portuguese? Translate this site with Google or Bing Translator
Laravel email with queue 550 error aws

Posted on: February 10, 2022 10:40 AM

Posted by: Renato

Views: 232

Email Laravel com erro de fila 550 (muitos emails por segundo)

Laravel email with queue 550 error (too many emails per second) | Recipient count exceeds 50.
 

Our error message is:

Feb 09 17:15:57 laravel: message repeated 7947 times: [ production.ERROR: exception 'Swift_TransportException' with message 'Expected response code 354 but got code "550", with message "550 5.7.0 Requested action not taken: too many emails per second "' in /home/laravel/app/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php:383 Stack trace: #0 /home/laravel/app/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(281): 

Eu finalmente descobri como configurar todo o aplicativo Laravel para acelerar o correio com base em uma configuração.

Na boot()função de AppServiceProvider,

$throttleRate = config('mail.throttleToMessagesPerMin');
if ($throttleRate) {
    $throttlerPlugin = new \Swift_Plugins_ThrottlerPlugin($throttleRate, \Swift_Plugins_ThrottlerPlugin::MESSAGES_PER_MINUTE);
    Mail::getSwiftMailer()->registerPlugin($throttlerPlugin);
}

Em config/mail.php, adicione esta linha:

'throttleToMessagesPerMin' => env('MAIL_THROTTLE_TO_MESSAGES_PER_MIN', null), //https://mailtrap.io has a rate limit of 2 emails/sec per inbox, but consider being even more conservative.

Em seus .envarquivos, adicione uma linha como:

MAIL_THROTTLE_TO_MESSAGES_PER_MIN=50

O único problema é que isso não parece afetar os emails enviados por meio da later()função if QUEUE_DRIVER=sync.

Solução 3:

Apenas para depuração!
Se você não espera mais de 5 e-mails e não tem a opção de alterar mailtrap , tente:

foreach ($emails as $email) {
    ...
    Mail::send(... $email);                                                                      
    if(env('MAIL_HOST', false) == 'smtp.mailtrap.io'){
        sleep(1); //use usleep(500000) for half a second or less
    }
}

Usar sleep() é uma prática muito ruim. Em teoria, esse código deve ser executado apenas em ambiente de teste ou em modo de depuração.

#Lumen

Parece que Lumen e Illuminate/Mailer não funcionam muito bem juntos.

No entanto, encontrei uma correção bastante fácil em um thread do Github. 

a Github thread.

Basicamente, você só precisa criar um novo provedor de serviços no diretório app/Providers.

MailServiceprovider.php

<?php

namespace App\Providers;

use Illuminate\Mail\Mailer;
use Illuminate\Mail\MailServiceProvider as BaseProvider;

class MailServiceProvider extends BaseProvider
{
    /**
     * Register the Illuminate mailer instance.
     *
     * @return void
     */
    protected function registerIlluminateMailer()
    {
        $this->app->singleton('mailer', function ($app) {
            $config = $app->make('config')->get('mail');

            // Once we have create the mailer instance, we will set a container instance
            // on the mailer. This allows us to resolve mailer classes via containers
            // for maximum testability on said classes instead of passing Closures.
            $mailer = new Mailer(
                $app['view'], $app['swift.mailer'], $app['events']
            );

            // The trick
            $mailer->setQueue($app['queue']);

            // Next we will set all of the global addresses on this mailer, which allows
            // for easy unification of all "from" addresses as well as easy debugging
            // of sent messages since they get be sent into a single email address.
            foreach (['from', 'reply_to', 'to'] as $type) {
                $this->setGlobalAddress($mailer, $config, $type);
            }

            return $mailer;
        });

        $this->app->configure('mail');

        $this->app->alias('mailer', \Illuminate\Contracts\Mail\Mailer::class);
    }
}

 

E então você só precisa registrar este provedor de serviços em seu bootstrap/app.php em vez do padrão adicionando a seguinte linha:

$app->register(\App\Providers\MailServiceProvider::class);

#Fontes:

https://stackify.dev/997974-laravel-email-with-queue-550-error-too-many-emails-per-second

https://stackoverflow.com/questions/50438011/laravel-lumen-failing-to-dispatch-event

https://laracasts.com/discuss/channels/lumen/lumen-52-mail-not-working

https://stackoverflow.com/questions/35304197/laravel-email-with-queue-550-error-too-many-emails-per-second


1

Share
About Author

Renato

Developer

Add a Comment
Comments 0 Comments

No comments yet! Be the first to comment

Blog Search


Categories

OUTROS (12) Variados (109) PHP (108) Laravel (116) Black Hat (3) front-end (25) linux (86) postgresql (35) Docker (14) rest (4) soap (1) webservice (6) October (1) CMS (2) node (7) backend (10) ubuntu (41) devops (22) nodejs (5) npm (2) nvm (1) git (4) firefox (1) react (6) reactnative (5) collections (1) javascript (5) reactjs (7) yarn (0) adb (1) solid (0) blade (2) models (1) controllers (0) log (0) html (2) hardware (2) aws (14) Transcribe (2) transcription (1) google (3) ibm (1) nuance (1) PHP Swoole (4) mysql (22) macox (2) flutter (1) symfony (1) cor (1) colors (2) homeOffice (2) jobs (2) imagick (2) ec2 (1) sw (1) websocket (1) markdown (1) ckeditor (1) tecnologia (13) faceapp (1) eloquent (11) query (2) sql (35) ddd (3) nginx (6) apache (4) certbot (1) lets-encrypt (2) debian (9) liquid (1) magento (2) ruby (1) LETSENCRYPT (1) Fibonacci (1) wine (1) transaction (1) pendrive (1) boot (1) usb (1) prf (1) policia (1) federal (1) lucena (1) mongodb (4) paypal (1) payment (1) zend (1) vim (2) ciencia (6) js (1) nosql (1) java (1) JasperReports (1) phpjasper (1) covid19 (1) saude (1) athena (1) cinnamon (1) phpunit (1) binaural (1) mysqli (3) database (33) windows (2) vala (1) json (2) oracle (1) mariadb (2) dev (12) webdev (24) s3 (4) storage (1) kitematic (1) gnome (2) web (2) intel (1) piada (1) cron (2) dba (13) lumen (1) ffmpeg (2) android (2) aplicativo (1) fedora (2) shell (3) bash (2) script (3) lider (1) htm (1) csv (1) dropbox (1) db (3) combustivel (2) haru (1) presenter (1) gasolina (1) MeioAmbiente (1) Grunt (0) biologia (1) programming (20) performance (2) brain (1) smartphones (1) telefonia (1) privacidade (1) opensource (1) microg (1) iode (1) ssh (1) zsh (1) terminal (1) dracula (1) spaceship (1) mac (1) idiomas (1) laptop (1) developer (27) api (1) data (1) matematica (1) seguranca (2) 100DaysOfCode (6) hotfix (1) documentation (1) laravel (2) RabbitMQ (1) Elasticsearch (1) redis (1) Raspberry (3) Padrao de design (4) JQuery (1) angularjs (2) Dicas (12) kubenetes (1) vscode (1) backup (1) angular (1) servers (2) pipelines (1) AppSec (1) DevSecOps (2) rust (1) RustLang (1) Mozilla (1) algoritimo (1) sqlite (1) Passport (1) jwt (1) security (1) translate (1) kube (1) iot (1) politica (1) bolsonaro (1) flow (1) podcast (1) Brasil (1) containers (2) traefik (1) networking (1) host (1) POO (1) microservices (1) bug (1) cqrs (1) arquitetura (1) Architecture (1)

New Articles



Get Latest Updates by Email