HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux Bradford-Sitios 6.14.0-1017-azure #17~24.04.1-Ubuntu SMP Mon Dec 1 20:10:50 UTC 2025 x86_64
User: www-data (33)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/middleware-citas-dev/app/Services/BrevoService/BrevoMailer.php
<?php

namespace App\Services\BrevoService;

use Illuminate\Support\Facades\Http;

class BrevoMailer
{
    public static function send($email, $subject, $template, $data, $attachments = [])
    {
        if (env('TYPE_MODE') != 'production') {
            $email = env('SEND_MAIL_TEST');
        }

        $body = [
            "sender" => [
                "name" => env('MAIL_FROM_NAME'),
                "email" => env('MAIL_FROM_ADDRESS')
            ],
            "to" => [
                [
                    "email" => $email,
                    "name" => $email
                ]
            ],
            "subject" => $subject,
            "htmlContent" => view($template, $data)->render(),
        ];

        $attachmentData = [];
        foreach ($attachments as $filePath) {
            if (isset($filePath['base64']) && $filePath['base64'] == 1) {
                // Contenido ya viene en base64
                $attachmentData[] = [
                    'name' => $filePath['name'],
                    'content' => $filePath['content'],
                ];
            } elseif (isset($filePath['url']) && $filePath['url'] == 1) {
                $attachmentData[] = [
                    'name' => isset($filePath['name']) && !empty($filePath['name']) ? $filePath['name'] : basename($filePath['content']),
                    'content' => base64_encode(file_get_contents($filePath['content'])),
                ];
            } else {
                $attachmentData[] = [
                    'name' => $filePath['name'],
                    'content' => file_get_contents($filePath['content']),
                ];
            }
        }

        if (!empty($attachmentData)) {
            $body['attachment'] = $attachmentData;
        }

        $response = Http::withHeaders([
            'accept' => 'application/json',
            'api-key' => env('MAIL_PASSWORD'),
            'content-type' => 'application/json',
        ])->post('https://api.sendinblue.com/v3/smtp/email', $body);

        return $response->successful();
    }
}