Php: Elegir a que email enviar el formulario.

Hoy voy a añadir un cachito de código más a lo dicho el otro día sobre cómo enviar un formulario por php.

Esta vez quiero crear un formulario de contacto general en el que el usuario seleccione entre varias opciones a que departamento de la empresa quiere dirigirse y según el elegido, los datos se enviarán a una dirección de email o a otra.

seleccionar departamento

Flickr: Seleccionar departamento

Ej. Información se enviará el email a info@empresa.com
Compras se enviará el email a compras@empresa.com

Explicado esto, me pongo manos a la obra.

Recuerda: escribo el post teniendo en cuenta que ya sabes enviar un formulario de contacto con php.

Para mostrar los departamentos al usuario lo hago a través de un Grupo de opciones.
Para ello ponemos todos los input del tipo “radio” que nos hagan falta, pero teniendo en cuenta que deben llevar el mismo “name” (para así ser un grupo, y no botones de opción separados).

<input type="radio" name="Departamento" value="informacion@empresa.com" id="Departamento_0"  /> Informacion
<input type="radio" name="Departamento" value="compras@empresa.com" id="Departamento_1" /> Compras

Podemos agregar las opciones que queramos, teniendo en cuenta que la id debe ser correlativa.. empezando por “Departamento_0” y continuando “Departamento_1, Departamento_2,..” (Departamento es el “name” que tiene mi grupo de opciones, tú puedes poner el que quieras).

Y por último, en la propiedad “value” tenemos que escribir el email de cada opción.
Vale, ya tenemos el grupo de opciones con sus respectivos emails, ahora vamos a conseguir que se envie a la dirección que corresponda.
Antes agregábamos el email ‘a pelo‘ en la función mail() para que nos enviara nuestro formulario, pues esta vez lo vamos a poner a través de una variable. El código quedaría así:

$email = $_POST['Departamento'];
mail($email, $subject, $msg, "FROM: formulario@empresa.com<formulario@empresa.com>\n");

En la variable $email recogemos la dirección de email que ha seleccionado el usuario y la pasamos cómo dirección de destino a la función mail() y.. ualá! mensaje enviado a donde queríamos!
Cómo extra voy a escribir una función javascript que nos validará que se haya seleccionado una opción, ya que si no tenemos ninguna seleccionada el formulario se enviaría al infinito y más allá.. xD

function validarDepartamento(){
 var valor=0;
 for(i=0; ele=document.NameDelFormulario.elements[i]; i++){
if (ele.type=='radio')
if (ele.checked){valor=1;break;}
 }
 if (valor==1){
document. NameDelFormulario.submit();
 }else{
alert('Seleccione el departamento al que desea enviar el email.');
return;
 }
}

Para validar las opciones, creamos un bucle que recorre todos los “input radio” de nuestro form (acuérdate de cambiar NameDelFormulario por el “name” real que tiene tu formulario) y cuando llegue a uno seleccionado se detiene y devuelve el envío del formulario. Si no hay ninguno seleccionado, muestra un alerta al usuario pidiendole que seleccione uno.

A que es sencillo? :D

  • 20 mayo 2008
  • Programación
  • , ,

65 comments on “Php: Elegir a que email enviar el formulario.”

  1. Hola me ha encantado tu blog esta muy padre y el contenido es bastante bueno, espero que sigas posteando seguido
    saludos…

  2. Hola Jorge!
    Muchas gracias por tu comentario, me alegra saber q alguien me lee jaja
    No tengo tiempo de postear todo lo que quisiera pero si te pasas de vez en cuando seguro q hay algo nuevo :P

  3. muchas gracias a ti Jesz! y a los que tienen un ratito para leer lo que escribo, la verdad me ilusiona muchísimo :)
    ahora mismo tengo unos problemillas con el servidor, pero para cuando lo arregle ya tengo varios post preparados para publicar, ya me dirás que te parecen!

  4. Esta muy buena la información, te envió saludos y espero que sigas poniendo tus conocimientos al servicios de todos.

    En relación al ejercicio que hiciste, relativo al formulario en PHP para enviarlo al departamento que seleccine el usuario, como lo podría hacer pero con un menú desplegable. Es que mis opciones son 30. Gracias.

  5. Buenas tardes Lic. José, ando un poco perdida estos días pero cuando tenga un ratito seguiré escribiendo.. muchas gracias por pasarte por aquí! :)
    Sobre lo que me preguntas, utilizar un menú desplegable es igual de sencillo, el menú en sí te quedaría asi:

    <select name=”Departamento”>
    <option value=”email@uno.com”>departamento uno</option>
    <option value=”email@dos.com”>departamento dos</option>
    </select>

    Y añades todos los option que necesites.. La variable $email y la función mail quedan igual que en el ejemplo original:

    $email = $_POST[‘Departamento’];
    mail($email, $subject, $msg, “FROM: formulario@empresa.com<formulario@empresa.com>\n”);

    Ya que el campo sigue teniendo el mismo name que antes.

    Espero que te funcione, lo he hecho un poco de carrerilla-lógica, ya que me marcho ya y no quería irme sin responderte. Cualquier duda o error me avisas y te contesto con un poquito más de tiempo :) saludos!

    1. Hola Natalia, primero decirte que es el tutorial que más me ha ayudado con este tema y gracias.
      Por otro lado quería retomar el tema del menú desplegable, me gustaría saber en que quedó la conversación, ya que lo he intentado yo pero no lo he conseguido… (me interesa mucho esto… ya que hay muchos departamentos y el desplegable es la mejor opción para nosotros)
      Por el formulario no me funciona con cuentas de correo de hotmail, sabes algo al respecto

  6. Muchas gracias iniciaré probando lo que me indicas, en unos días te escribo para decirte los resultados. Muchas gracias por tu tiempo nnatali.

  7. hola tengo todo el formulario peor ahora tengo que agregar algo que me de opcion para mandar a un correo u otro como le hago con el codigo que ya tengo adaptarlo a este?

  8. destinatario=”erika.salgado@controladora.com.mx”;

    $cabeceras=”MIME-Version: 1.0\r\n”;
    $cabeceras .= “Content-type: text/html; charset=utf-8\r\n”;
    $cabeceras.=”From: {$_POST[‘nombre’]}\r\n”;
    $cabeceras.=”Reply-To: {$_POST[‘email’]}\r\n”;

    etc etc

  9. Hola marcela!
    Para elegir entre varias opciones a la hora de enviar el formulario, no debes pones en la variable destinatario tu email, sino que la recoja de un campo elegido entre varias opciones (en este caso desde el input radio).. no sé si me explico..
    De todas formas relee este artículo que lo explico de la forma que te digo, y si no te llegas a aclarar me vuelves a preguntar vale?
    Saludos!

  10. Hola muchas gracias esta muy padre tu blog peor debo admitir que no pude :( aplicarlo a mi formulario sera que estoy muy sonsa para esto d eprogramar como puedo hacer que funcione estas opciones y no como lo tengo porqwue lo intente pero fallidamente

  11. hola nnatali asi puse el codigo y no funciono :(
    $destinatario=”
    departamento uno
    departamento dos
    ;

    $cabeceras=”MIME-Version: 1.0\r\n”;
    $cabeceras .= “Content-type: text/html; charset=utf-8\r\n”;
    $cabeceras.=”From: {$_POST[‘nombre’]}\r\n”;
    $cabeceras.=”Reply-To: {$_POST[‘email’]}\r\n”;

    $asunto=”Contactar”;

  12. $destinatario=”
    departamento uno
    departamento dos
    ;

    $cabeceras=”MIME-Version: 1.0\r\n”;
    $cabeceras .= “Content-type: text/html; charset=utf-8\r\n”;
    $cabeceras.=”From: {$_POST[‘nombre’]}\r\n”;
    $cabeceras.=”Reply-To: {$_POST[‘email’]}\r\n”;

    $asunto=”Contactar”;

  13. ay no de verdad que etsoy bien sonsa como podria adaptar mi formulario con las opciones varias peus ya lo tengo todo y el codigo tmb es decir cuando lo probe si manda al correo que le asigne el comentario peor ahora necesito que esto tenga la opciones d ecorreo y no consigo adaptarlo a mi codigo y diseño como puedo hacerle la verdad eres muy paciente y te agradeceria muchisimo pudieras ayudarme como puedo ponerme en contatco contigo para que puedas ver mi formulario y codigo :( ?

  14. hola nnatali
    buscando por la red scripts en php para poder enviar email
    me tope con tu blog que por cierto dejame te felicito por tus aportaciones.
    me gustaria me pudieras asesorar en algunas dudas que tengo te dejo mi correo de hotmail para que me agregues cmbs_166@hotmail.com
    me puedes enviar el formulario completo ami correo y como tengo que hacerle para que funcione? gracias

  15. hola qutal..?? esta muy bueno los formularios, pero estoy perdido con php jeje me podrias decir como hacer un formulario en html y que los datos vayan a mi correo xfa si??

  16. Hola, realmente te felicito por el tuto, me sirvió de ayuda para entender varios puntos de php.
    Qusiera hacerte una consulta, yo estoy realizando esto mismo en un formulario hecho en html+php y no logro hacer que me envie el formulario a la casilla, de hecho no me llega a ningun lugar.
    Quisiera saber si estoy haciendo algo mal. Te cuento que arme en dw lo siguiente:

    Selecciones a que área desea dirigirse:
    Telefonía
    Sistemas

    Nombre:

    Mail:

    Comentario:

    y en el archivo enviar.php puse lo siguiente:

    Tienes alguna idea de lo que puedo estar haciendo mal? Realmente no tengo idea de porque me hace eso.

    Gracias por tu tiempo.
    Saludos-

    Lola.

    1. Hola Lola!
      No he podido revisar el código que utilizastes ya que se interpretó el php en el comentario, si quieres, enviame un email y miro a ver si lo podemos solucionar :)
      De todas formas dime si te aparece algún error al pulsar sobre el botón enviar, y si tu servidor admite php.
      Un saludo!

  17. Hola soy nuevo en este foro y un novato en la creacion de formularios, de hecho estoy dando mis primeros pinitos en esto de las paginas web, me gustaria que me enviaras el codigo completo a mi correo, ya que es justamente el tema que estoy buscando sobre como enviar un correo a una ciudad elegida en mi caso que es para una pagina de servicios.

  18. Bueno aun no lo intento pero no pude esperar para comentarte. Esto era justo lo que estaba buscando. Pero aquí entre nos: De PHP y JS se lo mismo que puede saber uno de maternidad de gallinas. Sin embargo no por esto dejaré de intentarlo.

    Buen blog. Buen contenido. Me encanta el diseño.
    Un saludo desde Santiago de Cali, Colombia.

    Pipe.M

  19. Hola pipe.martinez!
    Muchas gracias por pasarte por aquí y por tus comentarios, que alegría que consiguieses implementarlo sin problemas, si te surge cualquier cosa simplemente pregunta ;)
    Saludos!

  20. Hola nnatali. Gracias por responder. Pues a ver. Finalmente, después de varios madrasos logré lo que queria (creo). Pero ¿sabes qué no logro? validar los radio buttons. Es decir, puedo llenar todos los datos correctamente y no seleccionar el destinatario y el formulario se va, ‘al infinito y más allá’

    http://www.soulnmind.net/tecpen-preview/contacto.php (ahi esta el formulario hecho gracias al codigo que colgaste aquí y a otros que vi por ahi dando vueltas)

  21. Hola de nuevo pipe.martinez!
    ¿Y no has pensado en poner una opción checkeada por defecto?
    Ya que igual hay quién no sabe a que dirección enviar una pregunta general.
    Saludos!

  22. me gusta mucho tu blog tengo pocos dias de verlo pero me ah gustado mucho te escribo por que segui tu formulario y pude mandar correo pero no se como poner el select para escojer a quien enviarlo espero me puedas ayudar

  23. Buenas tardes, yo envio correos de confirmacion cuando subo un archivo, pero quiero seleccionar los usuarios a los cuales yo quiera q le llegn los email….. para evitar q le lleg notificaciones a usuarios o analistas q no tengan nada q ver con dicha carga… te agradesco la ayuda.

    saludos,

  24. Hola Natali! muy buenos tus articulos!
    Quisiera consultarte donde debo colocar el codigo para validar el formulario y tambien como sería el codigo para validar los demas: nombre, mail, tel, comentario..
    muchas gracias!

  25. Hola Nelly,

    ¿Cómo estás?, felicidades por tu blog, muy útil e interesante.

    ¿Tienes más información de cómo hacer un formulario php con varios opciones de email destino?

    Estuve revisando tu publicación de elegir a que email enviar, pero creo que ayudaría que en el código html no se incluyan las direcciones de correo para evitar ser víctimas de spam. Sería excelente tener una opción para que en el html solo se vean opciones 1, 2, 3 y que en el código php que llame se especifiquen las posibles direcciones de correo destino.

    Muchas gracias por tu información, saludos.

  26. Quien tendrá los codigos ya colocados para poder descargarlo, ya que mi formulario no me funciona.

    Aqui dejo lo que tengo en mi arhivo php.
    haber si me dan una mano.

    ——–

    <form action="” method=”post”>

    Nombre:

    Luis
    Pedro

    Teléfono:

    Email:

    Mensaje:

    <?php
    }else{
    $mensaje="Mensaje del formulario de contacto";
    $mensaje.= "\nNombre: ". $_POST['nombre'];
    $mensaje.= "\nEmail: ".$_POST['email'];
    $mensaje.= "\nTelefono: ". $_POST['telefono'];
    $mensaje.= "\nMensaje: \n".$_POST['mensaje'];
    $remitente = $_POST['email'];
    $asunto = "Mensaje enviado por: ".$_POST['nombre'];
    $email = $_POST['Departamento'];
    mail($email, $subject, $msg, "FROM: FORMULARIO \n”);
    ?>
    Mensaje enviado.

    —-

    Saludos, y gracias.

    Luis Carlos

  27. Hola Nataly,saludos cordiales desde San Nicolas de los Garza Nuevo Leon Mexico
    de tu servidor Poncho.

    Tu blog. esta mas que excelente con todos los tutoriales que has creado para ayudar a las personas como yo que no sabemos casi o nada de php, sigue asi adelante….

    Me podrias ayudar no he podido adaptar el formulario para que envie los correos a distintos destinatarios. me podrias ayudar. me mandarias por favor el archivo completo para estudiarlo y adaptarlo.
    requiero adaptarlo a 6 correos
    Direccion General
    Franquicias
    Ventas
    Compras
    Soporte

    te soy completamente sincero, no se nada de php estoy en “0” las paginas que he echo en el trabajo son a vaze de paquetes de platillas prefabricadas,pero ahora que me encomendaron hacerla desde “0”. me tope con este detalle, casi la termino pero me falta este modulo de contacto.
    porfavor AYUDAME…
    mis correos son poncho_gc@msn.com y ponchogyg@gmail.com
    Por favor ayudame…

    estoy como dise el discho “chango viejo no aprende maroma nueva”
    jejejejeje. asi deise me han discho…..

  28. Hola excelente tu aporte, mi consulta es similar a la de Edmundo, como elegir una opcion y que le mensaje se envie a varios correos, y claro que estos no se vean sino se coloquen internamente, agradeceré mucho tu ayuda.

  29. Hola, tengo una duda de como enviar un formulario a diferentes departamentos y que además cargue datos adjuntos (esto creo que lo tengo hecho) por más que leo el blog no consigo hacerme con ello….Por favor me puedes echar una mano?

    Codigo HTML del formulario

    Nombre

    E-mail


    Asunto

     

    Madrid
    Valencia
    Alicante
    Ponferrada
    A Coruña



    Mensaje

    Adjuntar curriculum:

    Archivo PHP “enviar.php”

    $sValor) $sTexto = $sTexto.”\n”.$sNombre.” = “.$sValor; foreach ($_FILES as $vAdjunto) { if ($bHayFicheros == 0) { $bHayFicheros = 1; $sCabeceras .= “Content-type: multipart/mixed;”; $sCabeceras .= “boundary=\”–_Separador-de-mensajes_–\”\n”; $sCabeceraTexto = “—-_Separador-de-mensajes_–\n”; $sCabeceraTexto .= “Content-type: text/plain;charset=iso-8859-1\n”; $sCabeceraTexto .= “Content-transfer-encoding: 7BIT\n”; $sTexto = $sCabeceraTexto.$sTexto; } if ($vAdjunto[“size”] > 0) { $sAdjuntos .= “\n\n—-_Separador-de-mensajes_–\n”; $sAdjuntos .= “Content-type: “.$vAdjunto[“type”].”;name=\””.$vAdjunto[“name”].”\”\n”;; $sAdjuntos .= “Content-Transfer-Encoding: BASE64\n”; $sAdjuntos .= “Content-disposition: attachment;filename=\””.$vAdjunto[“name”].”\”\n\n”; $oFichero = fopen($vAdjunto[“tmp_name”], ‘r’); $sContenido = fread($oFichero, filesize($vAdjunto[“tmp_name”])); $sAdjuntos .= chunk_split(base64_encode($sContenido)); fclose($oFichero); } }
    if ($bHayFicheros) $sTexto .= $sAdjuntos.”\n\n—-_Separador-de-mensajes_—-\n”; return(mail($sPara, $sAsunto, $sTexto, $sCabeceras)); }
    if (form_mail(“anubisdivina@hotmail.com”, $_POST[asunto], “Los datos introducidos en el formulario son:\n\n”, $_POST[email])) echo “Su curriculum ha sido enviado con exito”; ?>

    ¿Cómo tengo que dejar finalmente el archivo php para que funcione todo correctamente?…Muchas Gracias

  30. Buenas tardes, me esta ayudando mucho tu código pero sabes, a mi me pidieron que al seleccionar un option me mande a un correo o a otro pero que me mande tambien la captura de lo que dice en el option.

    PARTE DE MI FORMULARIO

    Clasificado(Gratis)
    Publicitario

    PARTE DE MI CÓDIGO DE CAPTURA
    $mensaje.=”\nTipo de anuncio: “.$_POST[‘se’];

    Y EL DE ENVIO
    $destino = $_POST[‘se’];
    mail($destino,$asunto,$mensaje, “FROM: $remitente”);

    … hago como lo explicas pero con un select (que es lo que necesito) pero quiero que me salga lo que el usuario ve dentro del option ya en la captura que se le manda al correo 1 o correo 2… pero me llega al correo1 dentro de la captura “correo1@msn.com” y no “Clasificado(Gratis)” podrías ayudarme ahi? porfavor

  31. Hola gracias por tu ayuda!!!
    Me llega el mail dependiendo la casilla perfecto. pero me llega vacio. me ayudas?
    La validacion de que se haya seleccionado una opcion si o si donde debo colocarla?

    Pego el php:

    <form action="” method=”post”>

    Nombre:

    Teléfono:

    Email:

    Mensaje:

    <?php
    }else{
    $mensaje="Mensaje del formulario de contacto";
    $mensaje.= "\nNombre: ". $_POST['nombre'];
    $mensaje.= "\nEmail: ".$_POST['email'];
    $mensaje.= "\nTelefono: ". $_POST['telefono'];
    $mensaje.= "\nMensaje: \n".$_POST['mensaje'];
    $email = $_POST['Departamento'];
    mail($email, $subject, $msg, "FROM: formulario@empresa.com\n”);
    $remitente = $_POST[‘email’];
    $asunto = “Mensaje enviado por: “.$_POST[‘nombre’];
    mail($destino,$asunto,$mensaje,”FROM: $remitente”);
    ?>

    Mensaje enviado.
    <?php
    }

    GRACIAS

  32. Hola, por casualidad me encontré con tu blog y me pareció genial, es bueno saber que hay otras chicas en el mundo que programan. Espero sigas escribiendo porque en este momento te agrego a mis marcadores. Saludos!

  33. Buenos días, enhorabuena por este post, me ha sido de gran ayuda.
    Agradecería muchísimo si pudieses decirme cómo puedo poner que además del e-mail que se selecciona en el Select/Radio, llegue siempre una copia a otra cuenta general.

    Muchísimas gracias!

  34. Hola Natali, sinceramente agradezco por los codigos que has publicado y queria solicitar tu ayuda.
    Necesito un formulario con selector (Que eliga a quien sera destinado el correo), realice paso a paso lo que indicas en tu pagina pero solo me funciona el codigo sin un selector. Cuando agrego un selector no envia el correo . saludos y gracias por la buena onda

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *