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();
}
}