Задача из не простых конечно уж.
Если готовые коды но неизвестно рабочие или нет.
Юзаем библиотеку Laravel SwiftMailer
И для телеги Laravel Telegram Bot API.
Начинаем наш скрипт делать.
// app/Models/Notification.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Notification extends Model
{
    const TYPE_EMAIL = 1;
    const TYPE_TELEGRAM = 2;
    const STATUS_WAIT = 0;
    const STATUS_SENT = 1;
    const STATUS_ERROR = 2;
    protected $fillable = ['to', 'type', 'template', 'class_provider', 'subject', 'content', 'status'];
    public function sendNotification()
    {
        // ...
    }
}
public function sendNotification()
{
    switch ($this->type) {
        case self::TYPE_EMAIL:
            $this->sendEmailNotification();
            break;
        case self::TYPE_TELEGRAM:
            $this->sendTelegramNotification();
            break;
        default:
            throw new \Exception('Unknown notification type');
    }
}
public function sendEmailNotification()
{
    // Получаем провайдера email из поля class_provider
    $provider = app($this->class_provider);
    // Получаем получателя и контент сообщения из модели уведомления
    $to = $this->to;
    $content = json_decode($this->content);
    // Создаем экземпляр класса MailMessage
    $message = new \Illuminate\Mail\Message();
    // Устанавливаем адрес отправителя и получателя
    $message->setFrom(config('mail.from.address'), config('mail.from.name'));
    $message->addTo($to);
    // Устанавливаем тему и контент сообщения
    $message->setSubject($this->subject);
    $message->setBody($content->message, 'text/html');
    // Отправляем сообщение
    try {
        $provider->send($message);
        $this->status = self::STATUS_SENT;
    } catch (\Exception $e) {
        $this->status = self::STATUS_ERROR;
    }
    $this->save();
}
public function sendTelegramNotification()
{
    // Получаем получателя и контент сообщения из модели уведомления
    $to = $this->to;
    $content = json_decode($this->content);
    // Отправляем сообщение
    try {
        \Telegram::sendMessage([
            'chat_id' => $to,
            'text' => $content->message,
        ]);
        $this->status = self::STATUS_SENT;
    } catch (\Exception $e) {
        $this->status = self::STATUS_ERROR;
    }
    $this->save();
Ну теперь почта.
config/mail.php
// config/mail.php
return [
    'default' => env('MAIL_MAILER', 'smtp'),
    'mailers' => [
        'smtp' => [
            'transport' => 'smtp',
            '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,
            'auth_mode' => null,
        ],
    ],
    // ...
];
И юзаем метод для отправки уведомление в любое место нашего приложения.
$notification = Notification::find(1);
$notification->sendNotification();