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/proveedores.bradford/application/helpers/sendgrid_mail_helper.php
<?php

require_once('sendgrid-php/sendgrid-php.php');

if (!defined('BASEPATH')) exit('No direct script access allowed');

use SendGrid\Mail\Mail;
use SendGrid\Mail\Attachment;

function enviarCorreoMail($data_mail)
{

	// Datos del correo
	$mensaje = $data_mail['mensaje'];
	$asunto = $data_mail['asunto'];
	$para = $data_mail['para'];
	$de = $data_mail['remitente'];
	// Crear instancia del correo
	$email = new Mail();

	try {
		$email->setFrom($de, $data_mail['usuario']);
		$email->setSubject($asunto);
		$email->addTo($para, "");

		// Añadir BCC si existe
		if (!empty($data_mail['bcc_remitente'])) {
			// Verificar si es un solo correo o una lista
			$bccs = is_array($data_mail['bcc_remitente']) ? $data_mail['bcc_remitente'] : [$data_mail['bcc_remitente']];
			foreach ($bccs as $bcc) {
				try {
					$email->addBcc($bcc);
				} catch (Exception $e) {
					error_log("Error al agregar BCC ($bcc): " . $e->getMessage());
				}
			}
		}
	} catch (Exception $e) {
		error_log('Error al configurar el remitente o destinatario: ' . $e->getMessage());
		return 0;
	}
	// Adjuntar archivos si existen
	if (!empty($data_mail['attach'])) {
		foreach ($data_mail['attach'] as $key => $value) {
			try {
				// Leer el contenido del archivo
				$file_content = file_get_contents($value['path']); // Se espera que 'path' contenga la ruta completa del archivo
				if ($file_content) {
					// Convertir el contenido a base64
					$encoded_content = base64_encode($file_content);
					// Crear el attachment
					$attachment = new Attachment();
					$attachment->setContent($encoded_content);
					$attachment->setType($value['type']); // Ejemplo: 'application/pdf'
					$attachment->setFilename($value['file_name']); // Ejemplo: 'archivo.pdf'
					$attachment->setDisposition('attachment');
					$email->addAttachment($attachment);
				} else {
					error_log("No se pudo leer el archivo: " . $value['path']);
				}
			} catch (Exception $e) {
				error_log("Error al agregar attachment: " . $e->getMessage());
			}
		}
	}

	// Contenido del correo
	$email->addContent("text/html", $mensaje);

	// Enviar el correo
	$sendgrid = new \SendGrid($_ENV['API_KEY']);

	$message_id = 0;
	try {
		$response = $sendgrid->send($email);
		$array_headers = $response->headers();
		foreach ($array_headers as $header) {
			if (strpos($header, 'X-Message-Id') !== false) {
				$message_id = str_replace('X-Message-Id: ', '', $header);
			}
		}
		return $message_id;
	} catch (Exception $e) {
		error_log('Error al enviar correo: ' . $e->getMessage());
		return 0;
	}
}


## BREVO
function enviarCorreoMailBrevo($data_mail, $data_pdf = array())
{

	$mensaje = $data_mail['mensaje'];
	$asunto = $data_mail['asunto'];
	$para = $data_mail['para'];
	$de = $data_mail['remitente'];
	if ($_ENV['TYPE_MODE'] != 'PRODUCTION') {
		$para = $_ENV['SEND_MAIL_TEST'];
	}
	// URL de la API
	$url = "https://api.sendinblue.com/v3/smtp/email";
	// Datos del cuerpo de la solicitud
	$data = array(
		"sender" => array(
			"name" => $_ENV['MAIL_FROM_NAME'],
			"email" =>  $_ENV['MAIL_FROM_ADDRESS']
		),
		"to" => array(
			array(
				"email" => $para,
				"name" => $para
			)
		),
		"subject" => $asunto,
		"htmlContent" => $mensaje,
		"headers" => array(
			"X-Mailin-custom" => "",
			"charset" => "UTF-8"
		)
	);
	// Agregar adjuntos si hay
	if (!empty($data_mail['attach'])) {
		$attachments = [];

		foreach ($data_mail['attach'] as $file_path) {

			if (file_exists($file_path['path'])) {
				$attachments[] = array(
					"name" => basename($file_path['file_name']),
					"content" => base64_encode(file_get_contents($file_path['path']))
				);
			}else{
			}
		}
		if (!empty($attachments)) {
			$data['attachment'] = $attachments;
		}
	}
	// Cabeceras de la solicitud
	$headers = array(
		"accept: application/json",
		"api-key: " . $_ENV['MAIL_PASSWORD'],
		"content-type: application/json"
	);
	// Inicializar la sesión cURL
	$curl = curl_init();
	// Configurar opciones cURL
	curl_setopt($curl, CURLOPT_URL, $url);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
	curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
	curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));

	// Ejecutar la solicitud y obtener la respuesta
	$response = curl_exec($curl);

	// Manejar errores si es necesario
	if (curl_errno($curl)) {
		$resp = 'error';
		// echo 'Error en la solicitud cURL: ' . curl_error($curl);
	} else {
		$resp = 'ok';
	}

	// Cerrar la sesión cURL
	curl_close($curl);

	// Imprimir la respuesta
	// pre_die($resp);
	return $resp;
}