Commits

christiansalazar committed 15ebd9d

mejoras en crugemailer. agrega campos cc,bcc,replyTo, mejoras en log. keyword mail

  • Participants
  • Parent commits 60af806

Comments (1)

  1. Christian Salazar repo owner

    Esta mejora permite que se puedan especificar campos BCC, CC, REPLY-TO en el encabezado del correo a ser enviado, se configuran en "config/main.php", asi:

    'crugemailer'=>array(
                'class' => 'application.modules.cruge.components.CrugeMailer',
                'mailfrom' => 'noreply@tudominio.com',
                'subjectprefix' => 'Tu Encabezado del correo aqui - ',
                'bcc'=>'christian@coquito.coquito.local',  // <-- para que haga una copia oculta
                'cc'=>'otracuenta@xxx.com',  // <-- para que haga una copia a otro correo
                'replyTo'=>'respondeaqui@xxx.com',  // <-- para que respondan a esta cuenta, por defecto es a "mailfrom"
        ),
    

    la otra mejora es que el metodo base sendEmail crea un LOG bajo el keyword: "email", de esa manera es mas facil ver que mensajes se estan enviando, se puede revisar el log, el cual previamente pudo haber sido configurado en config/main para que solo muestre los mensajes relevantes a "email":

        'log'=>array(
            'class'=>'CLogRouter',
            'routes'=>array(
                array(
                    'class'=>'CFileLogRoute',
                    'levels'=>'error, email',          <--- agregar: "email"
                ),
            ),
    

Files changed (1)

File extensions/crugemailer/CrugeMailerBase.php

     public $mailfrom; // configurado en mail config
     public $subjectprefix = ""; // prefijo para los asuntos del correo
     public $controllerId = "mailer";
+	public $cc;
+	public $bcc;
+	public $replyTo;
 
     private $_controller = null;
     private $_module = null;
     protected function sendEmail($to, $subject, $body)
     {
         $from = $this->mailfrom;
+		$cc = '';$bcc='';$reply='';
+		if($this->replyTo=='') $this->replyTo = $from;
+		if($this->cc != '') $cc = 'Cc: '.$this->cc."\r\n";
+		if($this->bcc != '') $bcc = 'Bcc: '.$this->bcc."\r\n";
+		$reply='Reply-To: '.$this->replyTo."\r\n";
         $_subject = $this->subjectprefix . $subject;
-        $headers = "From: {$from}\r\nReply-To: {$from}" . "\r\n";
+        $headers = "To: {$to}\r\nFrom: {$from}\r\n";
+		$headers .= $reply;
+		$headers .= $cc;
+		$headers .= $bcc;
         $headers .= "MIME-Version: 1.0" . "\r\n";
         $headers .= "Content-type: text/html; charset=utf-8" . "\r\n";
         $ret = @mail($to, $_subject, $body, $headers);
-        $tmp = "to:" . $to . "\nsubject:" . $_subject . "\nbody:" . $body . "\n";
-        Yii::log("email:\n" . $tmp . "\n", "info");
+        $tmp = "to:".$to."\nsubject:".$_subject."\nheaders:\n"
+			.$headers."\nbody:".$body."\n";
+        Yii::log(__METHOD__."\nreturns:".$ret."\n".$tmp,"email");
         return $ret;
     }