responsiv / campaign-plugin

[PREMIUM] Send professional campaign messages to your subscribers.
http://octobercms.com/plugin/responsiv-campaign
5 stars 2 forks source link

Campaign mailer interrupted at wrong recipient address #51

Closed jochemgruter closed 4 years ago

jochemgruter commented 6 years ago

With using mailgun as maildriver I got the following error when sending a campaign if one of the subscribers has a wrong e-mailadress (in this case is the domain extension wrong). The mail to all following subscribers is interrupted.

[2018-03-06 22:20:02] production.ERROR: GuzzleHttp\Exception\ClientException: Client error: `POST https://api.mailgun.net/v3/mg.******.com/messages.mime` resulted in a `400 BAD REQUEST` response:
{
  "message": "'to' parameter is not a valid address. please check documentation"
}
 in /var/www/html/plugins/october/drivers/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:107
Stack trace:
#0 /var/www/html/plugins/october/drivers/vendor/guzzlehttp/guzzle/src/Middleware.php(65): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Psr7\Request), Object(GuzzleHttp\Psr7\Response))
#1 /var/www/html/plugins/october/drivers/vendor/guzzlehttp/promises/src/Promise.php(203): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Response))
#2 /var/www/html/plugins/october/drivers/vendor/guzzlehttp/promises/src/Promise.php(156): GuzzleHttp\Promise\Promise::callHandler(1, Object(GuzzleHttp\Psr7\Response), Array)
#3 /var/www/html/plugins/october/drivers/vendor/guzzlehttp/promises/src/TaskQueue.php(61): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}()
#4 /var/www/html/plugins/october/drivers/vendor/guzzlehttp/promises/src/Promise.php(246): GuzzleHttp\Promise\TaskQueue->run(true)
#5 /var/www/html/plugins/october/drivers/vendor/guzzlehttp/promises/src/Promise.php(223): GuzzleHttp\Promise\Promise->invokeWaitFn()
#6 /var/www/html/plugins/october/drivers/vendor/guzzlehttp/promises/src/Promise.php(266): GuzzleHttp\Promise\Promise->waitIfPending()
#7 /var/www/html/plugins/october/drivers/vendor/guzzlehttp/promises/src/Promise.php(225): GuzzleHttp\Promise\Promise->invokeWaitList()
#8 /var/www/html/plugins/october/drivers/vendor/guzzlehttp/promises/src/Promise.php(62): GuzzleHttp\Promise\Promise->waitIfPending()
#9 /var/www/html/plugins/october/drivers/vendor/guzzlehttp/guzzle/src/Client.php(129): GuzzleHttp\Promise\Promise->wait()
#10 /var/www/html/plugins/october/drivers/vendor/guzzlehttp/guzzle/src/Client.php(87): GuzzleHttp\Client->request('post', 'https://api.mai...', Array)
#11 /var/www/html/vendor/laravel/framework/src/Illuminate/Mail/Transport/MailgunTransport.php(79): GuzzleHttp\Client->__call('post', Array)
#12 /var/www/html/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mailer.php(85): Illuminate\Mail\Transport\MailgunTransport->send(Object(Swift_Message), Array)
#13 /var/www/html/vendor/laravel/framework/src/Illuminate/Mail/Mailer.php(394): Swift_Mailer->send(Object(Swift_Message), Array)
#14 /var/www/html/vendor/october/rain/src/Mail/Mailer.php(69): Illuminate\Mail\Mailer->sendSwiftMessage(Object(Swift_Message))
#15 /var/www/html/vendor/october/rain/src/Mail/Mailer.php(113): October\Rain\Mail\Mailer->send('<!DOCTYPE html ...', Array, Object(Closure))
#16 /var/www/html/vendor/october/rain/src/Mail/Mailer.php(131): October\Rain\Mail\Mailer->sendTo(Array, Array, Array, Object(Closure), false)
#17 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(219): October\Rain\Mail\Mailer->rawTo(Object(Responsiv\Campaign\Models\Subscriber), Array, Object(Closure))
#18 /var/www/html/plugins/responsiv/campaign/classes/CampaignManager.php(117): Illuminate\Support\Facades\Facade::__callStatic('rawTo', Array)
#19 /var/www/html/plugins/responsiv/campaign/classes/CampaignWorker.php(117): Responsiv\Campaign\Classes\CampaignManager->sendToSubscriber(Object(Responsiv\Campaign\Models\Message), Object(Responsiv\Campaign\Models\Subscriber))
#20 /var/www/html/plugins/responsiv/campaign/classes/CampaignWorker.php(47): Responsiv\Campaign\Classes\CampaignWorker->processActiveMessages()
#21 /var/www/html/plugins/responsiv/campaign/Plugin.php(103): Responsiv\Campaign\Classes\CampaignWorker->process()
#22 [internal function]: Responsiv\Campaign\Plugin->Responsiv\Campaign\{closure}()
#23 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(507): call_user_func_array(Object(Closure), Array)
#24 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Scheduling/CallbackEvent.php(59): Illuminate\Container\Container->call(Object(Closure), Array)
#25 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleRunCommand.php(55): Illuminate\Console\Scheduling\CallbackEvent->run(Object(October\Rain\Foundation\Application))
#26 [internal function]: Illuminate\Console\Scheduling\ScheduleRunCommand->fire()
#27 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(507): call_user_func_array(Array, Array)
#28 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(150): Illuminate\Container\Container->call(Array)
#29 /var/www/html/vendor/symfony/console/Command/Command.php(263): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#30 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(136): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#31 /var/www/html/vendor/symfony/console/Application.php(852): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#32 /var/www/html/vendor/symfony/console/Application.php(199): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Console\Scheduling\ScheduleRunCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfo$
#33 /var/www/html/vendor/symfony/console/Application.php(123): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#34 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(107): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleO$
#35 /var/www/html/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
LukeTowers commented 4 years ago

@jochemgruter Can confirm. The fix is to wrap the Mail::raw() in a try catch block and log an error with the subscriber's email address and the exception message so that the campaign can continue. Will talk to @daftspunk to see if I can get access to the code base to fix it.

LukeTowers commented 4 years ago

Fixed in v1.2.2