PHP code example of codewiser / laravel-smscenter-mailer

1. Go to this page and download the library: Download codewiser/laravel-smscenter-mailer library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

codewiser / laravel-smscenter-mailer example snippets


'smsc' => [
    'transport' => 'smsc',
    'endpoint'  => env('SMSC_URL', 'https://smsc.ru/sys'),
    'username'  => env('SMSC_LOGIN'),
    'password'  => env('SMSC_PASSWORD'),
    'secret'    => env('SMSC_SECRET'),
],

use Illuminate\Support\Facades\Mail;

$recipients = [
    '[email protected]',
    '[email protected]',
];

Mail::send(new CustomMailable($recipients));

use Codewiser\SmsCenterMailer\SmsCenterContract;
use Illuminate\Support\Facades\Mail;
use Illuminate\Mail\Events\MessageSent;

$recipients = [
    '[email protected]',
    '[email protected]',
];

Event::listen(MessageSent::class, function (MessageSent $event) {

    $service = app(SmsCenterContract::class);
    
    // json encoded response
    $response = json_decode($event->sent->getDebug(), true);
    
    // Die if service respond with error
    $service->throw($response);
    
    // Keep $response['id'] for later use
});

Mail::send(new CustomMailable($recipients));

use Codewiser\SmsCenterMailer\MessageStatus;
use Codewiser\SmsCenterMailer\SmsCenterContract;
use Codewiser\SmsCenterMailer\SmsCenterStatusEvent;

/**
 * Execute the console command.
 */
public function handle(SmsCenterContract $provider): void
{   
    // For single messages
    $request = $provider->buildSingleStatusPayload(
        message_id: $this->argument('id'),
        route: $this->argument('email')
    );
    
    // For mass sending
    $request = $provider->buildMailOutStatusPayload(
        message_id: $this->argument('id')
    );
    
    // Die if service respond with error
    $response = $provider->throw(
        $provider->send($request)
    );
    
    // Get status
    $status = MessageStatus::tryFrom($response['status']) ?? MessageStatus::undefined;
    
    // Update status or fire event (see Push)
    event(new SmsCenterStatusEvent($this->argument('id'), $status));
}

use Codewiser\SmsCenterMailer\SmsCenterContract;
use Illuminate\Http\Request;

public function webhook(Request $request, SmsCenterContract $service) {
    
    $service->webhookStatus($request->all());
    
    return response('ok');
}

use Codewiser\SmsCenterMailer\SmsCenterStatusEvent;

/**
 * Handle the event.
 */
public function handle(SmsCenterStatusEvent $event): void
{
    // Find message by $event->id
    // Update message status with $event->status
}