<?php
//https://github.com/PHPMailer/PHPMailer
//require_once('../include/phpmailer/PHPMailerAutoload.php');

class Mailer{
    private const FROM = "academia@lasalle.mx";
    private const FROM_NAME = "Vicerrectoría Académica";
    private const FROM_PASS = "Foy25193";
    private const FOOTER = "<p style='margin-top:5em; color:#aaa;font-style:italics'><small>Este es un correo automatizado, esta cuenta no recibe correos.<small></p>";
    //private $lista_to, $asunto, $texto;

    /**
     * Función estática para mandar correos. Los destinatarios pueden ser arreglo o cadena separada por ; incluir: include/phpmailer/PHPMailerAutoload.php
     * 
     * @param array|string $lista_to El destinatario o lista de destinatarios. Puede ser un arreglo de direcciones de correo electrónico o una cadena de texto con direcciones de correo separadas por ;.
     * @param string $asunto El asunto del correo.
     * @param string $texto El cuerpo del mensaje del correo en HTML.
     * @param bool $bcc Indica si se debe enviar el correo como copia oculta (true) o no (false). Valor por defecto: false.
     *
     * @return bool True si el correo se envió exitosamente, false en caso contrario.
     */
    public static function enviarCorreo($lista_to, $asunto, $texto, $bcc = false){
        try{
            //SMTP Settings
            $mail = new PHPMailer();
            $mail->CharSet = 'UTF-8';
            $mail->SMTPDebug  = 0;
            $mail->isSMTP();
            $mail->SMTPAuth = true;
            $mail->SMTPSecure = 'TLS';
            $mail->Host = "smtp.office365.com";
            $mail->Port = 587;
            $mail->Username = self::FROM;
            $mail->Password = self::FROM_PASS;

            $mail->SetFrom(self::FROM, self::FROM_NAME); //from (verified email address)
            $mail->Subject = $asunto; //subject
        
            $mail->IsHTML(true);
            $mail->MsgHTML($texto.self::FOOTER);//adjunta footer
            //recipient
            if(is_array($lista_to)){
                foreach($lista_to as $correo){
                    if(trim($correo)!="")
                        if($bcc)
                            $mail->addBCC($correo);
                        else
                            $mail->AddAddress($correo);
                }
            }else{//cadena de texto separada por ;
                if(strpos($lista_to, ";")!==false){
                    $toArr = explode(";", $lista_to);
                    foreach($toArr as $correo){
                        if(trim($correo)!=""){
                            if($bcc)
                                $mail->addBCC($correo);
                            else
                                $mail->AddAddress($correo);
                        }
                    }
                }elseif(strpos($lista_to, ",")!==false){
                    $toArr = explode(",", $lista_to);
                    foreach($toArr as $correo){
                        if(trim($correo)!=""){
                            if($bcc)
                                $mail->addBCC($correo);
                            else
                                $mail->AddAddress($correo);
                        }
                    }
                }else{
                    if(trim($lista_to)!=""){
                        if($bcc)
                            $mail->addBCC($lista_to);
                        else
                            $mail->AddAddress($lista_to);
                    }
                }
                
            }
            //Success
            if ($mail->Send()) { 
                return true;
            }
        }catch(phpmailerException $e){
            echo $mail->ErrorInfo;
            return false;
        }catch(Exception $e2){
            echo $mail->ErrorInfo;
            return false;
        }
        return false;
    }

}