Que tal amigos, estoy desarrollando un mini-framework propio para saber de lo que estoy hecho, y tengo un inconveniente:
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
}
}
}
Lo que hace es recibir el destinatario, el titulo del correo que voy a enviar, el archivo donde se encuentra la vista del correo que voy a mandar y datos en caso de que los precise.
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;
}
registradoConExito.php 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>
Desde ya, muchas gracias.