Foros del Web » Programando para Internet » PHP »

estado del envio del correo

Estas en el tema de estado del envio del correo en el foro de PHP en Foros del Web. Hola, estoy creando un formulario de correo y lo que quiero es que el estado del envio se muestre en la misma pagina html que ...
  #1 (permalink)  
Antiguo 30/12/2009, 09:06
 
Fecha de Ingreso: diciembre-2008
Mensajes: 67
Antigüedad: 15 años, 3 meses
Puntos: 1
estado del envio del correo

Hola, estoy creando un formulario de correo y lo que quiero es que el estado del envio se muestre en la misma pagina html que el formulario, me explico, cuando uno meta sus datos en el formulario y pinche en enviar formulario quiero que el estado ("ha sido enviado con exito" o "ha ocurrido un error") se muestre debajo del mismo formulario.

Codigo php

<?php
$name = $_POST['name'];
$mail = $_POST['mail'];

$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/html";

$message = "<b>Este mensaje fue enviado por:</b> " . $name . "<br>";
$message .= "<b>Su e-mail es:</b> " . $mail . "<br>";
$message .= "<b>Mensaje:</b> " . $_POST['message'] . "<br><br>";
$message .= "Enviado el " . date('d/m/Y', time());

$para = '[email protected]';
$asunto = 'Contacto desde Another Chance Records';

mail($para, $asunto, utf8_decode($message), $header);

echo '&estatus=ok&';
?>

Codigo html, por si lo necesitais

<form action="php/send_email.php" method="post">
<input id="form" name="name" type="text" value="" size="30" maxlength="80" title="Name"><br><br>
<input id="form" name="mail" type="text" value="" size="30" maxlength="80" title="Mail"><br><br>
<textarea id="form" name="message" cols="30" rows="3" title="Message"></textarea><br><br>
<input id="btn" name="send" type="submit" value="Send message">
</form>

Espero que alguien me pueda ayudar.

Un saludo!
  #2 (permalink)  
Antiguo 30/12/2009, 09:16
 
Fecha de Ingreso: diciembre-2009
Mensajes: 72
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: estado del envio del correo

por no pruebas con mandarle mediante un header() a la pagina desde donde mandas el formulario con la variable $msg = "ha sido enviado con exito" o "ha ocurrido un error"
  #3 (permalink)  
Antiguo 30/12/2009, 09:18
Avatar de FNX_NET  
Fecha de Ingreso: marzo-2004
Ubicación: EN EL INFIERNO.....
Mensajes: 1.707
Antigüedad: 20 años
Puntos: 7
Respuesta: estado del envio del correo

Código PHP:
<?php
if(@mail('[email protected]','Asunto','Hola Mundo'))
 echo 
'mail enviado satisfactoriamente';
else
 echo 
'error enviando el mail';

?>
__________________
:-D "Que se libere del cielo confinado; que mi cuerpo sea la espada de hielo negro que nos lleve al abismo; que ningún poder pueda detenernos...Destructora de las almas de los dioses!!!":adios:


:pirata:
  #4 (permalink)  
Antiguo 30/12/2009, 11:00
 
Fecha de Ingreso: diciembre-2008
Mensajes: 67
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: estado del envio del correo

gracias pero igualmente me lleva a otra pagina, lo que quiero es que salga debajo del mismo formulario.
  #5 (permalink)  
Antiguo 30/12/2009, 11:08
Avatar de FNX_NET  
Fecha de Ingreso: marzo-2004
Ubicación: EN EL INFIERNO.....
Mensajes: 1.707
Antigüedad: 20 años
Puntos: 7
Respuesta: estado del envio del correo

Pero por el metodo que usas, siempre que hagas click en el formulario te va a mandar a otra pagina

ahora tienes 2 opciones, la primera que te van a decir todo es "Usa Ajax..." o que si la pagina php/sendmail.php te envie denuevo a la misma pagina del formulario.
__________________
:-D "Que se libere del cielo confinado; que mi cuerpo sea la espada de hielo negro que nos lleve al abismo; que ningún poder pueda detenernos...Destructora de las almas de los dioses!!!":adios:


:pirata:
  #6 (permalink)  
Antiguo 30/12/2009, 12:53
 
Fecha de Ingreso: diciembre-2008
Mensajes: 67
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: estado del envio del correo

Muchas gracias, lo he hecho con ajax y ya me funciona :D

Saludos!
  #7 (permalink)  
Antiguo 30/12/2009, 12:58
Avatar de FNX_NET  
Fecha de Ingreso: marzo-2004
Ubicación: EN EL INFIERNO.....
Mensajes: 1.707
Antigüedad: 20 años
Puntos: 7
Respuesta: estado del envio del correo

deberias postear la solucion para el que la necesite
__________________
:-D "Que se libere del cielo confinado; que mi cuerpo sea la espada de hielo negro que nos lleve al abismo; que ningún poder pueda detenernos...Destructora de las almas de los dioses!!!":adios:


:pirata:
  #8 (permalink)  
Antiguo 30/12/2009, 13:43
 
Fecha de Ingreso: diciembre-2008
Mensajes: 67
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: estado del envio del correo

Cierto, aqui va

archivo.html

llamamos al archivo ajax
<script type="text/javascript" src="js/ajax.js"></script>

nuestro formulario
<form id="form_mail" onSubmit="enviarMail(); return false" name="enviar_email" action="">
<input id="form" name="name" type="text" value="" size="30" maxlength="80" title="Name"><br><br>
<input id="form" name="mail" type="text" value="" size="30" maxlength="80" title="Mail"><br><br>
<textarea id="form" name="message" cols="30" rows="3" title="Message"></textarea><br><br>
<input id="btn_send_mail" name="send" type="submit" value="Send message">
</form>

creamos un div para que nos muestre el resultado
<div id="resultado_mail"></div>

ajax.js

llamamos a la libreria jquery, esto es opcional, mas abajo os explico para que lo necesito
src="jquery.js"

function nuevoAjax() {
var xmlhttp=false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}

Una función que llama a la libreria de jquery
$(document).ready(function(){
$("#form_mail").show();
$("#resultado_mail").hide();
$("#btn_send_mail").click(function(){
$("#form_mail").hide();
$("#resultado_mail").show();
});
});


function enviarMail() {
c = document.getElementById('resultado_mail');

//variable=documenet.nombre_del_form.nombre_del_cont rol.value
name=document.enviar_email.name.value;
mail=document.enviar_email.mail.value;
mess=document.enviar_email.message.value;

ajax=nuevoAjax();
c.innerHTML = 'Loading...';

llamamos al archivo .php
ajax.open("POST", "http://www.folter.es/acr/php/send_mail.php", true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
c.innerHTML = ajax.responseText
}
borrarCampos()
}
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ajax.send("mail="+mail+"&name="+name+"&message="+m ess)
}

function borrarCampos() {
document.enviar_email.name.value="";
document.enviar_email.mail.value="";
document.enviar_email.message.value="";
}

send_mail.php

<?php
$name = $_POST['name'];
$mail = $_POST['mail'];

$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/html";

$message = "<b>Este mensaje fue enviado por:</b> " . $name . "<br>";
$message .= "<b>Su e-mail es:</b> " . $mail . "<br>";
$message .= "<b>Mensaje:</b> " . $_POST['message'] . "<br><br>";
$message .= "Enviado el " . date('d/m/Y', time());

$para = '[email protected]';
$asunto = 'Contacto desde Another Chance Records';

if (@mail($para, $asunto, utf8_decode($message), $header))
echo 'Message sent successfully';
else
echo 'Error';
?>

Aclaración

He metido una funcion de javascript llamando a la libreria jquery, para que me sea mas sencillo de crear esa funcion. Dicha funcion sirve para cuando presiones el boon enviar correo el formulario se oculta y muestra el div que creamos anteriormente para decirnos el resultado del correo.
Para los que no quieren esta opcion solo tienen que borrar la linea que llama a la libreria jquery (src="jquery.js") y la funcion de color verde.

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 02:38.