alvaro-prieto
5/17/2017 - 7:51 AM

Enviar un email

Enviar un email.

Si quiero en desarrollo ver como van quedando los emails, ir a log/email en mi maquina y mirar los archivos .eml

es necesario tenter: www/config/config.php --> introducir línea: DEFINE('GUARDAR_EMAILS',true);

Enviar emails

Control->enviaEmail()

Esta forma es para enviar un email no encolado, que se envía en el momento exacto de ejecutarse el código.

La instancia de la clase que va antes de "miClase->enviaEmail(...)" permite que se sustituyan en la plantilla los datos de la instancia cargada, aunque frecuentemente se la pasan los datos a sustituir en el objeto contenido que se le pasa por parmetros. Si se quieren usar los datos de la instancia cargada, se utilizan de la misma manera en la plantilla, por ejemplo [[nombre]]


$Web=new Web();
$Web->carga( $Web->webActual() );
$destinatario = $this->quid->variable('email_responsable_extension',$Web->datos->idcentro);
if($destinatario){
    $obj = ["blabla"=>"hola mundo"]; // variables para sustitución en plantilla
    $plantilla = "hubModeracionAnuncio";
    $Web->enviaEmail([
        'clave'=> $plantilla,
        'asunto'=> "Título del email" ,
        'dirRemitente'=> "noreply@uned.es",
        'nombreRemitente'=> 'UNED Tudela',
        'destinatarios'=> $destinatario,
        'contenido'=> $obj
    ]);
    return "enviado a $destinatario del centro ". $Web->datos->idcentro;
}
return "no hay email configurado: email_responsable_extension en el centro ". $Web->datos->idcentro ;

$Usuario = new Usuario();
$Usuario->permitirCargaExterna=true;
$Usuario->carga($parametros['idusuario']);
$email = $Usuario->datos->email;
$PersonalLogros = new PersonalLogros();
$PersonalLogros->carga($parametros['idlogro']);	
	
	$PersonalLogros->enviaEmail(array(
		'clave'=>'LogroDesbloqueado',
		'asunto'=>"¡Enhorabuena! Has conseguido un nuevo logro" ,
		'dirRemitente'=>'noreply@uned.es',
		'nombreRemitente'=>'qInnova Tudela',
		'destinatarios'=>$email,
		'colaClave'=>'cola_Logros',
 		'colaTiempo'=>60*60*24
	));

/* es necesario crear una plantilla, pongo la asociada a este envío en un 
	archivo separado. Tener en cuenta que cargado un registro, la plantilla
	es capaz de acceder a sus campos, y también puede recibir parámetros (eso
	no lo pongo en este ejemplo)*/
<br/>
<h2 style="color:#3b705b">¡Enhorabuena! Has conseguido un nuevo logro</h2>
<br/>
<div style='font-size:1em;'>
	<p>Has desbloqueado  el logro <strong style="color:#3b705b; text-decoration:underline">[[logro]]: </strong> [[descripcion]] </p>
	<p>¡Esperamos que sigas así para poder condecorarte con un nuevo logro muy pronto!</p>
	<p>Gracias</p>
	<br>
</div>
<br/><br/>

Es casi igual, simplemente añadimos un filtro sobre Archivo y se adjuntan. No hacerlo con $Archivo->carga() ya que la funcion adjuntar archivos espera un array como el que retorna lista()

FORMA OBSOLETA

$email = new Email("alvaro.qinnova@gmail.com","título del email","practicum_emails", "Cuerpo del email");
$Archivo = new Archivo();
$Archivo->añadeFiltro("id=41654");  // filtramos los archivos que queremos enviar, en este caso 1
$archivoAdjunto = $Archivo->lista("id as id,ruta,extension,nombrearchivo,nombre");
$email->adjuntarArchivos($archivoAdjunto);      
$emailR = "noreply@uned.es";
$nombreR = "Nombre remitente";
$email->remitente($emailR, $nombreR);
$envio = $email->enviar();
return $envio;