Cristalab

Artículos Foros Tutoriales Flash Actionscript Datos y XML Componentes CSS Otros Tips Actionscript CSS PHP Photoshop Flash Flex Cursos Ejemplos Comics Anime FAQ Colaborar Registrate
Buscar

Estás en: Cristalab > Tutoriales > Envió de correo electrónico desde PHP sin la función mail

Envió de correo electrónico desde PHP sin la función mail
Por: Sir Aoyama T. Pratchett + Otros tutoriales de Sir Aoyama T. Pratchett + 5 de Mayo del 2005 Autor Sir Aoyama T. Pratchett clabLevel: 5373 3 Tutoriales 0 Ejemplos En esta mi primera ocasión, les presento una forma alterna de enviar correo electrónico desde PHP sin la función mail, esto se puede implementar en formularios de sugerencias, boletines de noticias, etc. Para ello, nos valdremos de los pipes del sistema operativo, vale decir, que esta pequeña implementación, sólo la he probado bajo Linux y por lo tanto no garantizo que funcione bajo Windows.

Primero la interfaz
Ahora, arranquemos nuestro editor favorito y creamos una pequeña plantilla con un formulario, este es el listado del archivo, envia.php
<form name="sugerencia" action="envio_sug.php" method="POST"> Nombre: <input type="text" name="sug_nombre" size=40><br /> Email: <input type="text" name="sug_email" size=40><br /> Asunto: <input type="text" name="sug_asunto" size=40><br /> Para: <select name="sug_para"> <option value="veracruz@cg.edu.mx">Dirección</option> <option value="israelgl@cg.edu.mx">Webmaster del sitio</option> </select> Mensaje: <textarea name="sug_mensaje" cols=40 rows=6></textarea> <input type="submit" value="Enviar"> <input type="reset" value="Limpiar"> </form>

Esta demás explicar lo que hace esta plantilla. Crearemos otra plantilla llamada envio_sug.php con el siguiente código:
<?php echo "<p>"; // Primero revisamos que las variables que vienen de los formularios no se encuentren vacías if (empty($_POST['sug_nombre'])) echo "<b>No se especifico nombre</b><br>"; if (empty($_POST['sug_email')) echo "<b>No se especifico E - mail</b><br>"; if (empty($_POST['sug_asunto'])) echo "<b>No se especifico asunto</b><br>"; if (empty($_POST['sug_mensaje'])) echo "<b>Por favor, no envie un mensaje en blanco</b><br>"; // Luego validamos con strchr la primera ocurrencia de la arroba y el punto, es decir, validamos // que sea un email lo que se escribe en el campo correspondiente if ((!strchr($_POST['sug_email'],"@")) || (!strchr($_POST['sug_email'],"."))) { echo "<b>No es un correo válido</b><br>"; // Esta bandera se activa en false si no es un email válido $valida = false; }

// Si todo sale bien if ((empty($_POST['sug_nombre'])) && (empty($_POST['sug_email'])) && (empty($_POST['sug_asunto'])) && (empty($_POST['sug_mensaje'])) && { // Creamos el header para el mensaje // Sección Para: $to = $_POST['sug_para']; // Asunto $subject = $_POST['sug_asunto']; // El content-Type y demás información para el mailer $headers = "MIME-Version: 1.0\n"; $headers .= "Content-type: text/html; charset=iso-8859-1 \r\n"; // El De: en la forma Nombre elcorreo@servidor.com, esto garantiza que // en el cliente de correo del receptor se vea sólo el nombre de quien envia // en su bandeja de entrada $headers .= "From: $_POST[sug_nombre] <$_POST[sug_email]> \r\n"; // Opcional: Resopnder a: $headers .= "Reply-To: " . $_POST['sug_email']; // El mensaje $message = $_POST['sug_mensaje']; // Abrimos un pipe Unix para ejecutar sendmail en el servidor, el "w" es porque se abre para escritura $fd = popen("/usr/sbin/sendmail -t", 'w'); // Metes las cabeceras del mensaje en el pipe fputs($fd, "To: $to\n"); fputs($fd, "Subject: $subject\n"); fputs($fd, "X-Mailer: PHP4\n"); if ($headers) { fputs($fd, "$headers\n"); } // Dejas un espacio en blanco fputs($fd, "\n"); // Metes el mensaje en el pipe fputs($fd, $message); //Cierras el pipe y con ello se envia el mensaje pclose($fd); echo "<b>Mensaje enviado, Gracias por sus sugerencias.</b><br>"; } echo '<a href="sugiere.php">Regresar</a></p>'; ?>

Y listo, eso es todo, siempre puedes utilizar la función mail, pero me pareció interesante realizar esta misma tarea de otra forma diferente, espero les haya servido. Un saludo y espero pronto escribir más

Información adicional
Si tienes alguna pregunta de este tutorial; puedes hacerla aqui en los foros

Tutoriales relacionados
Enviar mail HTML con Flash-PHP, buscador de dominio y plantillas Crear scrollbar más efecto de easing Boletín de noticias por correo con Flash, PHP y MySQL Introducción basica a Flash con PHP Cristalab | Artículos | Foros | Comics | Tutoriales | Ejemplos | Anime | Tips | FAQ | Colaborar