Ver Mensaje Individual
  #8 (permalink)  
Antiguo 30/12/2009, 13:43
Folter
 
Fecha de Ingreso: diciembre-2008
Mensajes: 67
Antigüedad: 15 años, 4 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!