Resulta que dentro de mi estructura, cree un archivo email.php donde desarrolle el siguiente código:
Código PHP:
<?php
class email{
public static function enviarEmail($para, $titulo, $archivo, $datos = null){
$body = Vista::crear(MAILS.$archivo,$datos); // deberia devolver toda la vista
$from = "From: Anonimo";
$envio = mail($para, $titulo, $body, $from);
if($envio){
return;
}
else{
return; //retornar error
}
}
}
Entonces lo que hago es llamar al metodo del objeto Vista que lo que hace es incluirme la vista del mail que voy a enviar, es decir, sintetizando, lo que hace finalmente es un include $archivo; pasandole los datos en caso de ser necesario.
El mail lo envía correctamente pero con el cuerpo vacío. Es más que obvio que el problema esta cuando llamo al metodo crear de Vista, por que lo que hago es incluir toda la vista y asignarselo a una variable (no estoy seguro si eso es posible hacerlo).
EJEMPLO AYUDA:
Para aclarar un poco más las cosas, supongamos que el usuario se registra y yo deseo enviarle todos los datos a su cuenta, además con el link de "confirmación de cuenta" entonces llamo al metodo enviarMail y le paso como parametros el mail del usuario, el titulo correspondiente, el archivo donde se aloja la vista del mail y los datos del usuario. Entonces el metodo enviarMail lo que hace es llamar al metodo crear de Vista que incluye el cuerpo del mensaje con los datos del usuario y TODO ESO, lo guardo en la variable body (que se supone que tiene todo el cuerpo del mensaje) y finalmente se envía.
Si hasta aca entendiste todo no hace falta que veas estos archivos, pero los comparto por las dudas:
vista.php
Código PHP:
<?php
class Vista {
//ruta, apodo y valor
public static function crear($path,$key=null,$value=null){
//comprobamos si existe la variable path
if($path != ""){
// comprobar si ese archivo existe
if(file_exists($path)){
//comprobar si existe $key
if(!is_null($key)){
if(is_array($key)){
// extrae los keys y los convierte a variables
extract($key,EXTR_PREFIX_SAME,"");
}else{
//("index","usus",$usuarios)
//$usus = $usuarios;
${$key} = $value;
}
}
include $path;
}else{
//die("no existe la vista");
return Vista::crear(MENSAJES."error/error404.php");
}
}
return null;
}
Código PHP:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<link rel="stylesheet" href="">
</head>
<body>
<?php echo $datos['usuario'];?>
<h1>Gracias por registrarte !</h1>
<ul>
<li>Usuario: <?php echo $usuario?></li>
<li>Password: <?php echo $password?></li>
<li>Email: <?php echo $email?></li>
<li>Nacimiento: <?php echo $date?></li>
</ul>
<a href="<?php echo $url;?>">Validar cuenta.</a>
</body>
</html>