Foros del Web » Programando para Internet » PHP »

enviar contenido variable de sesión por mail()

Estas en el tema de enviar contenido variable de sesión por mail() en el foro de PHP en Foros del Web. Buenas , he preguntado varias veces lo mismo y hasta ahora nadie ha sabido responderme correctamente (o yo no he entendido también puede ser). Tengo ...
  #1 (permalink)  
Antiguo 10/01/2008, 06:06
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 5 meses
Puntos: 8
enviar contenido variable de sesión por mail()

Buenas , he preguntado varias veces lo mismo y hasta ahora nadie ha sabido responderme correctamente (o yo no he entendido también puede ser). Tengo el siguiente problema , despúes de rocoger los datos de un pedido de esta manera.

$pedido=$_SESSION["ocarrito"]->su_pedido ()

con la función mail se envia el texto al cliente de que le llegará en X días , hasta ahy todo bien , pero no consigo que le llegue el pedido contenido en ese procedimiento de objeto carrito. Me han dicho que añadiera esto (lo q está en negrita), para que me llegase lo que quiero , puesto que es una tabla con el pedido y sus artículos, pero haciéndolo así tampoco me llega nada , "solo el texto como dije antes".

<?
function mail_pedido ($email,$payment,$ref) {
$sendto=$email;

$asunto="Su Pedido www.pepitojimenez.com";

$pedido=$_SESSION["ocarrito"]->su_pedido ();

$sender="From: [email protected] \r\nContent-type: text/html\r\n";
if ( mail("$sendto", "$asunto", "$mensaje","$sender") )

return true;
else
return false;

}
?>
Un saludo y gracias de antemano.
  #2 (permalink)  
Antiguo 10/01/2008, 09:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: enviar contenido variable de sesión por mail()

En ningun momento veo donde declaras la variable $mensaje, ni tampoco donde "anexas" el contenido de la variable $pedido a $mensaje.

Saludos.
  #3 (permalink)  
Antiguo 10/01/2008, 09:52
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 5 meses
Puntos: 8
Re: enviar contenido variable de sesión por mail()

Cita:
Iniciado por GatorV Ver Mensaje
En ningun momento veo donde declaras la variable $mensaje, ni tampoco donde "anexas" el contenido de la variable $pedido a $mensaje.

Saludos.
Bueno la he omitido por ser obvio , de todas maneras es algo asi

$mensaje=" gracias por pedir lo que sea , este es su pedido : \n\n ".$pedido;

algo así es como lo tengo , pero NO CONSIGO que el contenido de $pedido se envie por mail , es decir me llega solo esto " gracias por pedir lo que sea , este es su pedido :".

saludos y gracias
  #4 (permalink)  
Antiguo 10/01/2008, 10:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: enviar contenido variable de sesión por mail()

Haz echo un echo a $pedido para verificar el contenido de la variable?

Saludos.
  #5 (permalink)  
Antiguo 10/01/2008, 10:34
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 5 meses
Puntos: 8
Re: enviar contenido variable de sesión por mail()

Cita:
Iniciado por GatorV Ver Mensaje
Haz echo un echo a $pedido para verificar el contenido de la variable?

Saludos.
Si mira ..te comento ... $pedido guarda el contenido de una tabla que contiene cattidad , articulos total etc etc , y cuando se envia el mail y me notifica el correcto envio se imprime en pantalla el contenido de $pedido que no es otro que el de la instancia al objeto que escribí atrás .
Es decir se imprime en pantalla pero no se envia por mail ¿porque ? , púes no lo se , no lo entiendo la verdad.
un saludo y gracias
  #6 (permalink)  
Antiguo 10/01/2008, 10:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: enviar contenido variable de sesión por mail()

Prueba concatenando via sprintf:
Código PHP:
$mensaje sprintf"Gracias por su pedido: \n\n %s"$pedido );
if ( 
mail("$sendto""$asunto"$mensaje,"$sender") ) 
Saludos.
  #7 (permalink)  
Antiguo 10/01/2008, 11:43
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 5 meses
Puntos: 8
Re: enviar contenido variable de sesión por mail()

Cita:
Iniciado por GatorV Ver Mensaje
Prueba concatenando via sprintf:
Código PHP:
$mensaje sprintf"Gracias por su pedido: \n\n %s"$pedido );
if ( 
mail("$sendto""$asunto"$mensaje,"$sender") ) 
Saludos.
Que va compañero no con printf ni con print ni echo ni na de na , ¿alguna solución habrá no? .
Gracias
  #8 (permalink)  
Antiguo 10/01/2008, 11:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: enviar contenido variable de sesión por mail()

Esta muy extraño, ya que deberia de enviarse el correo (si $pedido es un string de texto), prueba haciendo mucho Debug:
Código PHP:
$mensaje "Gracias por su pedido";
echo 
"Contenido de \$mensaje: $mensaje";
echo 
"Contenido de \$pedido: $pedido";
$mensaje "Gracias por su pedido\n\n$pedido";
echo 
"Contenido del mail: $mensaje";
echo 
"Enviando mail: ";
if ( 
mail("$sendto""$asunto"$mensaje,"$sender") ) 
Y checa si te imprime en pantalla los datos.

Saludos.
  #9 (permalink)  
Antiguo 10/01/2008, 12:02
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 5 meses
Puntos: 8
Re: enviar contenido variable de sesión por mail()

Cita:
Iniciado por GatorV Ver Mensaje
Esta muy extraño, ya que deberia de enviarse el correo (si $pedido es un string de texto), prueba haciendo mucho Debug:
Código PHP:
$mensaje "Gracias por su pedido";
echo 
"Contenido de \$mensaje: $mensaje";
echo 
"Contenido de \$pedido: $pedido";
$mensaje "Gracias por su pedido\n\n$pedido";
echo 
"Contenido del mail: $mensaje";
echo 
"Enviando mail: ";
if ( 
mail("$sendto""$asunto"$mensaje,"$sender") ) 
Y checa si te imprime en pantalla los datos.

Saludos.
Bueno he investigando jejej haciendo pruebecillas y tal y resulta lo siguiente.

$pedido recoje la funcion
function su_pedido ()
que es un procedimiento de la clase "carrito" Y CUANDO ENVIO $PEDIDO por mail NO LLEGA NADA .
Ahora he creado una variable $variable= "Cualquier cosa" SIN pertenecer al objeto y esa si me la envia por email .
¿Puede ser que al ser una función no se pueda enviar por mail ? ¿no guardsaría `pedido el contenido de esa función correctamente por algún motivo?. El tema es que se yo hago echo $pedido o sin hacerlo se me muestra el contenido de dicha función PERO NO LLEGA AL MAIL.
Bueno gracias de nuevo
salu2

Bueno sigo experimentando y no consigo resolver el tema , he provado de la sugiente manera.

function mail_pedido ($email,$payment,$ref) {
session_start();

$sendto=$email;

$asunto="Su Pedido www.laniñadelexorcista.com";

$pedido="<table>
<tr>
<td> Artículo </td>
<td>Cantidad</td>
<td>Precio </td>
</tr>";
for ($i=0;$i< $this->num_productos;$i++)
{
$pedido.="<tr>
<td> ".$this->array_id_art[$i]."</td>
<td> ".$this->array_qty[$i]."</td>
<td> ".$this->array_price_total[$i]."</td> ";
}
$pedido.="</table>";function mail_pedido ($email,$payment,$ref) {
session_start();

$sendto=$email;

$asunto="Su Pedido www.laniñadelexorxista.com";

$pedido="<table>
<tr>
<td> Artículo </td>
<td>Cantidad</td>
<td>Precio </td>
</tr>";
for ($i=0;$i< $this->num_productos;$i++)
{
$pedido.="<tr>
<td> ".$this->array_id_art[$i]."</td>
<td> ".$this->array_qty[$i]."</td>
<td> ".$this->array_price_total[$i]."</td> ";
}
$pedido.="</table>";

Me envia solamente el contenido HTML sin el contenido de las variables del objeto en fin ...

Saludos

Última edición por Dundee; 15/06/2008 a las 08:25
  #10 (permalink)  
Antiguo 10/01/2008, 12:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: enviar contenido variable de sesión por mail()

Para que via $this-> puedas leer las variables de tu arreglo, tu funcion mail_pedido debe de ser un metodo de tu clase carrito.

Saludos.
  #11 (permalink)  
Antiguo 10/01/2008, 13:09
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 5 meses
Puntos: 8
Re: enviar contenido variable de sesión por mail()

[B]
Cita:
Iniciado por GatorV Ver Mensaje
Para que via $this-> puedas leer las variables de tu arreglo, tu funcion mail_pedido debe de ser un metodo de tu clase carrito.

Saludos.
Si me había dado cuenta , gracias . En realidad al final lo tenía en una función aparte de este modo;

function su_pedido () {

echo "<table border='0' width='100%'><tr><td colspan='3' align='center'>SU PEDIDO</td></tr>
<tr>
<td> Artículo </td> <td> Unidades </td> <td> Total </td>
</tr>";

for ($i=0 ; $i < $_SESSION["ocarrito"]->num_productos ; $i++ )

{
//Si array_id_art[$this->num_productos] es = a 0 significa que es un artículo eliminado de la cesta
if ($this->array_id_art[$i] !=0)
{
echo "<tr>
<td>" .$_SESSION["ocarrito"]->array_name[$i]." </td>";
echo " <td>".$_SESSION["ocarrito"]->array_qty[$i]." </td>";

echo " <td>".$_SESSION["ocarrito"]->array_price_total[$i]." </td> </tr>";
}




}
?>
</table>
<?

}

Y luego en el otro archivo
$pedidos=su_pedido () ;
Pero solo me envia por mail el contenido de la tabla sin nada es decir esto:
<table border='0' width='100%'><tr><td colspan='3' align='center'>SU PEDIDO</td></tr>
<tr>
<td> Artículo </td> <td> Unidades </td> <td> Total </td>
</tr>";

Saludos y gracias
  #12 (permalink)  
Antiguo 10/01/2008, 13:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: enviar contenido variable de sesión por mail()

Parece ser el problema viene aqui:
Código PHP:
for ($i=$i $_SESSION["ocarrito"]->num_productos $i++ ) 
Comprueba el valor de num_productos de tu variable, si es 0, tu for nunca se va a ejecutar y por eso no recorre tu tabla.

Saludos.
  #13 (permalink)  
Antiguo 14/01/2008, 07:49
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 5 meses
Puntos: 8
Re: enviar contenido variable de sesión por mail()

Cita:
Iniciado por GatorV Ver Mensaje
Parece ser el problema viene aqui:
Código PHP:
for ($i=$i $_SESSION["ocarrito"]->num_productos $i++ ) 
Comprueba el valor de num_productos de tu variable, si es 0, tu for nunca se va a ejecutar y por eso no recorre tu tabla.

Saludos.
Buenas , mira ya no se como hacerlo y estoy empezando a desesperarme , si hago echo $_SESSION["ocarrito"]->num_productos; compruebo que efectivamente tiene valor (el número de artículos de la cesta ).
El único problema es al he intentar enviarla por mail ME LLEGA TODO EL TEXTO DE MENSAJE menos lo que contiene la variable de sesión ; he intentado mandar otras variables que me he inventado PERO NO DE SESIÓN NI DEL OBJETO CARRITO una cualquuiera por ejemplo : $prueba="hola como estas"; y esa SI LLEGA AL MAIL ¿quien entiende esto?, es de locossssss.
Ah y he comprobado que la variables de sesión tiene todas su valor y ademas he creado una funcion mi_pedido(); donde se crea la tabla que contiene el pedido entero recogido a traves de las variables de sesión y HE COMPROBADO de sobra que esa función recoje PERFECTAMENTE el pedido haciendo :
$ver_pedido=mi_pedido(); y cursiosamente sin TENER que hacer echo ni nada en la paágina en la que `pongo esto $ver_pedido=mi_pedido(); se muestra el pedido repito SIN ECHO NI NADA , ahora cuando la envio por mail nunca llega.

Esto parece de locos y lo peor de todo es que nadie `parece saber la solución .
Un saludo y gracias por tu ayuda
Gracias por la ayuda.
  #14 (permalink)  
Antiguo 14/01/2008, 09:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: enviar contenido variable de sesión por mail()

Cual es el código de tu función mi_pedido() ?

Saludos.
  #15 (permalink)  
Antiguo 16/01/2008, 07:53
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 5 meses
Puntos: 8
Re: enviar contenido variable de sesión por mail()

Cita:
Iniciado por GatorV Ver Mensaje
Cual es el código de tu función mi_pedido() ?

Saludos.
Perdón por la tardanza en la contestación pero tengo estos días poco tiempo para conectarme.
el código creo q ya lo he pegado pero este es.


function su_pedido () {

echo "<table border='0' width='100%'><tr><td colspan='3' class='carrito_ver'>SU PEDIDO</td></tr>
<tr>
<td> Artículo </td> <td> Unidades </td> <td> Total </td>
</tr>";

for ($i=0 ; $i < $_SESSION["ocarrito"]->num_productos ; $i++ )

{
//Si array_id_art[$this->num_productos] es = a 0 significa que es un artículo eliminado de la cesta
if ($_SESSION["ocarrito"]->array_id_art[$i] !=0)
{
echo "<tr>
<td>" .$_SESSION["ocarrito"]->array_name[$i]." </td>";
echo " <td>".$_SESSION["ocarrito"]->array_qty[$i]." </td>";

echo " <td>".$_SESSION["ocarrito"]->array_price_total[$i]." </td> </tr>";
}




}
?>
</table>
<?

}

El problema es que si yo hago desde otra página
$pedido=su_pedido();
se ejecuta el código , es decir se muestra los datos TODOS del carrito sin hacer echo ¡¡ q raro no??, pero NO se recoje el contenido de la tabla en $pedido , por eso logicamente NUNCA llega nada al mail.

salu2 y gracias por la ayuda
  #16 (permalink)  
Antiguo 16/01/2008, 10:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: enviar contenido variable de sesión por mail()

Cambia tu funcion asi:
Código PHP:
<?php
function su_pedido () {

ob_start();
echo 
"<table border='0' width='100%'><tr><td colspan='3' class='carrito_ver'>SU PEDIDO</td></tr>
<tr>
<td> Artículo </td> <td> Unidades </td> <td> Total </td>
</tr>"
;

for (
$i=$i $_SESSION["ocarrito"]->num_productos $i++ )

{
//Si array_id_art[$this->num_productos] es = a 0 significa que es un artículo eliminado de la cesta
if ($_SESSION["ocarrito"]->array_id_art[$i] !=0)
{
echo 
"<tr>
<td>" 
.$_SESSION["ocarrito"]->array_name[$i]." </td>";
echo 
" <td>".$_SESSION["ocarrito"]->array_qty[$i]." </td>";

echo 
" <td>".$_SESSION["ocarrito"]->array_price_total[$i]." </td> </tr>";
}




}
?>
</table>
<?


return ob_get_clean();
}
y prueba nuevamente.

Saludos.
  #17 (permalink)  
Antiguo 17/01/2008, 07:50
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 5 meses
Puntos: 8
Re: enviar contenido variable de sesión por mail()

Un millón de gracias compañero ¡¡¡eso si funciona ¡¡ , de todas maneras no entiendo muy bien como esta hecho pero supongo que será una función predefinida esa que sas.
saludos y gracias
  #18 (permalink)  
Antiguo 17/01/2008, 10:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: enviar contenido variable de sesión por mail()

Lo único que hice es controlar todos tus "echos" y almacenarlos en una cadena de texto, que es lo que se regresa con el "return" así lo puedes enviar por correo.

Es algo similar a esto:
Código PHP:
$algo "";
$algo .= "texto";

return 
$algo;

// es igual a:
ob_start();
echo 
"texto";
return 
ob_get_clean(); 
Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:36.