Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Enviar Variables POST Vía Mail

Estas en el tema de Enviar Variables POST Vía Mail en el foro de PHP en Foros del Web. Hola a todos! Estoy dando mis primeros pasos en desarrollo con PHP, y me encuentro ante un primer inconveniente a la hora de crear un ...
  #1 (permalink)  
Antiguo 12/02/2013, 21:19
Avatar de SalParadise  
Fecha de Ingreso: marzo-2012
Ubicación: Buenos Aires
Mensajes: 7
Antigüedad: 12 años, 1 mes
Puntos: 0
Mensaje Enviar Variables POST Vía Mail

Hola a todos! Estoy dando mis primeros pasos en desarrollo con PHP, y me encuentro ante un primer inconveniente a la hora de crear un formulario de inscripción de method="post", cuyas variables quiero que lleguen vía mail (con un formato HTML en tablas simples) al usuario y a una casilla personal, y que sean traspasados a una segunda ventana en la cual el usuario verá los datos ya procesados con un formato imprimible (puesto que debe imprimir dichos datos -previamente validados- y mandar las hojas firmadas).

Explico brevemente cuáles son los pasos que estoy realizando y dónde tengo el inconveniente.

1- Creo un archivo "form.php" que contiene el formulario method="post", y una validación de datos en javascript. La acción de este formulario action="validar-datos.php" es traspasar los datos al archivo "validar-datos.php".

2- En el archivo "validar-datos.php" simplemente coloco el siguiente código de ejemplo para colectar los datos enviados por el usuario a través del form:
Código HTML:
<?php
	echo "Nombre: " . $_POST ["nombre"];
?> 
3- De esa forma puedo armar una segunda pantalla con un estilo prolijo de impresión para que el usuario imprima y firme.

PROBLEMA

Esos datos o variables que se procesan quiero que una vez que hayan sido validadas en el archivo "form.php", además de ser traspasadas al archivo que menciono en el punto dos -2-, sean enviadas por mail (utilizando una especie de máscara o archivo HTML en tablas) a la casilla del usuario y una personal, para saber que dicho usuario se inscribió.

Aquí es donde tengo el problema fundamental, desconozco completamente cómo hacer que el formulario genere dos acciones una vez que es enviado, o sea, pasar a la segunda ventana (esta parte es la que sale) y envíe esos datos por mail en una máscara que haga más amigable la visualización de los mismos.

Pido disculpas si me extendí demasiado en la explicación, espero que me puedan ayudar a solucionar este inconveniente.

Saludos a todos.
  #2 (permalink)  
Antiguo 12/02/2013, 21:37
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Enviar Variables POST Vía Mail

En el mismo archivo "validar-datos.php" puedes realizar ambas acciones, no hay nada "especial" en lo que deseas hacer, antes de imprimir tu tabla y los datos enviados via POST envia el email usando la función mail, o clases especializadas en envio de email usando SMTP externos al servidor donde están corriendo como phpMailer, en los links que te dejo hay información sobre como usar ambos metodos...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 13/02/2013, 14:19
Avatar de SalParadise  
Fecha de Ingreso: marzo-2012
Ubicación: Buenos Aires
Mensajes: 7
Antigüedad: 12 años, 1 mes
Puntos: 0
Mensaje Respuesta: Enviar Variables POST Vía Mail

Gracias por tu pronta respuesta, Nemutagk!

Hice como me dijiste, puse una de las funciones que estaba en los links que pasaste y ahora "validar-datos.php" muestra los datos y realiza el envío correctamente.

Ahora bien, tengo dos problemas que se desprenden de esta primera parte:

Primero, la codificación del texto cuando es completado en "form.php" genera problema porque tanto en la vista de impresión de "validar-datos.php" como lo que llega por mail se decodifica con los errores conocidos para caracteres espaciales, acentos, etc.

El otro tema a resolver, es cómo hacer para añadir elementos HTML en la variable $mail_body, ya que ahora llega un texto plano y aunque utilice opciones como --- [COLOR="rgb(255, 140, 0)"]'Nombre:' . $_POST ["nombre_txt"] . '\r' . 'Clave:' . $_POST ["password_txt"][/COLOR] --- sale todo en una línea, lo cual es confuso para su lectura.

Ojalá puedas guiarme en estos dos puntos para ya poder dejar en funcionamiento mi formulario.

Nuevamente gracias por tu ayuda.

Sal.
  #4 (permalink)  
Antiguo 13/02/2013, 15:59
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Enviar Variables POST Vía Mail

El problema de codificación ya esta demasiado tocado en el foro eh internet, usa el buscador, básicamente debes asegurarte que tanto el archivo PHP, la base de datos (si usas), la tabla y las celdas así como el HTML usen la misma codificación, por otro lado, lo de enviar en formato HTML debes usar tags HTML no psudo código como bbcode o similares, aparte de esto, depende también como estés enviando el email (via mail() o via phpmailer()), según el caso debes agregar una u otra variable, se mas especifico....
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 13/02/2013, 18:01
Avatar de SalParadise  
Fecha de Ingreso: marzo-2012
Ubicación: Buenos Aires
Mensajes: 7
Antigüedad: 12 años, 1 mes
Puntos: 0
Mensaje Respuesta: Enviar Variables POST Vía Mail

El tema codificación ya pude resolverlo. Respecto al segundo punto, estoy utilizando la opción [URL="http://www.php.net/manual/es/book.mail.php"]mail[/URL] que me recomendaste. Este es el código que estoy probando para el envío, el cual se efectúa correctamente:

Código HTML:
<?php 
		$Name = "Prueba Mail"; //senders name 
		$email = $_POST ["email"]; //senders e-mail adress 
		$recipient = "salparadise.ar@..................."; //recipient 
		$mail_body = 'Nombre:' . $_POST ["nombre_completo"] . '\r' . 'Ciudad:' . $_POST ["ciudad"]; //mail body 
		$subject = "Subject for reviever"; //subject 
		$header = "From: ". $Name . " <" . $email . ">\r\n"; //optional headerfields 

		mail($recipient, $subject, $mail_body, $header); //mail command :) 
	?> 
Nuevamente, gracias por tu ayuda.
  #6 (permalink)  
Antiguo 13/02/2013, 18:09
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Enviar Variables POST Vía Mail

Es exactamente lo mismo, solo hay que agregar las cabeceras que indican que el email es en formato HTML...

Código PHP:
Ver original
  1. <?php
  2.         $Name = "Prueba Mail"; //senders name
  3.         $email = $_POST ["email"]; //senders e-mail adress
  4.         $recipient = "salparadise.ar@..................."; //recipient
  5.         $mail_body = '<p>Nombre:' . $_POST ["nombre_completo"] . '</p><p>Ciudad:' . $_POST ["ciudad"].'</p>'; //mail body
  6.         $subject = "Subject for reviever"; //subject
  7.         $header = "From: ". $Name . " <" . $email . ">\r\n"; //optional headerfields
  8.         $header .= "MIME-Version: 1.0\r\n";
  9.         $header .= "Content-Type: text/html; charset=AquiLaCodificacionQueUsas\r\n";
  10.  
  11.         mail($recipient, $subject, $mail_body, $header); //mail command :)
  12.     ?>

Ojo, que no indique el charset, debes indicar el mismo que usas en tu aplicación para que se muestre correctamente!, o en su defecto usa entidades HTML...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #7 (permalink)  
Antiguo 14/02/2013, 08:02
Avatar de SalParadise  
Fecha de Ingreso: marzo-2012
Ubicación: Buenos Aires
Mensajes: 7
Antigüedad: 12 años, 1 mes
Puntos: 0
De acuerdo Respuesta: Enviar Variables POST Vía Mail

Perfecto, Nemutagk, ya está funcionando. Nuevamente agradezco la predisposición y ayuda brindada. Saludos.

Etiquetas: e-mail, form, post, print, send, variables
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 12:35.