Envío formulario a diferentes correos según selección

  • Autor Autor tuka85
  • Fecha de inicio Fecha de inicio
tuka85

tuka85

Gamma
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola.

Quiero hacer un formulario, que, al seleccionarlo en un select se pueda enviar a diferentes mails dependiendo de lo seleccionado.

Tengo el formulario:

Insertar CODE, HTML o PHP:
<body>
<?php
if (!isset($_POST['email'])) {
?>
 <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<table width="200" border="0">
  <tr>
    <td>Nombre</td>
    <td><input name="nombre" type="text" maxlength="50" size="25"/><br /><br /></td>
  </tr>
  <tr>
    <td>Apellidos</td>
    <td><input name="ape" type="text" maxlength="50" size="25" /><br /><br /></td>
  </tr>
      <td>Asunto</td>
 <td>
 <select name="asunto">
 <option value=""> Información General</option>
  <option value=""> Concursos</option>
   <option value=""> Denuncias</option>
    <option value=""> Protecciones</option>
 </select>
 </td>
  </tr>
  <tr>
    <td>
      Email (Requerido)</td>
    <td><input name="email" type="text" maxlength="50" size="25"  /><br /><br /></td>
  </tr>
  
  <tr>
    <td>Mensaje</td>
    <td><textarea cols="40" rows="6" name="mensaje"></textarea></td>
  </tr>
</table>
<input type="submit" value="Enviar" class="button">
</form>
</body>
</html>

Pero lo que no se es como decirle que si esta selecionado un select lo mande a un mail. No se cual es la funcion o propiedad para que recoja la informacion de la seleccion.

A ver si me podeis ayudar, muchas gracias!
 
Si yo enviar formularios sé, lo que no se es como enviar los datos de un select seleccionado, y que se envie, dependiendo de cada option del select a un mail diferente.

Imagino que sea algo facil con ifs, pero no se exactamente si hay una funcion o alguna cosa para saber si esta seleccionado un option.

Un saludo!
 
Lo miro luego y te digo.

Mil gracias!!
 
Podrías usar la clase phpmailer que es muy sencilla de usar y te permite hacer lo que quieres con una sencilla linea de código.
 
Buenas amigo, es simple
Cada select de mail lo pones un name por ejemplo name="ejemplo1"
y asi vas
If ($_POST['ejemplo1'] == 1)
mail(XXX);
If ($_POST['ejemplo2'] == 1)
mail(XXX);
O si lo sacas de un array (base de datos o otra cosa...)
pon un foreach
cambiado la valor 1 y 2 ...
y luego cambiado el destinatario del email, intentalu tu mismo,y si no sabes como te doy el codigo listo.
Saludos
 
Última edición:
[MENTION=3679]wsoul[/MENTION] el Else if no valdria esta vez ni el switch tambien, el quiere enviar Multiples Emails, por eso si utilizamos else if , si se mandara el primer email ya no mandaria el segundo, el tercero...
y el lo que quiere es mandar multiples. la verdad teniendo el manual PHP completo no se porque hay estas preguntas, quieren todo listo xD
 
Podrías usar la clase phpmailer que es muy sencilla de usar y te permite hacer lo que quieres con una sencilla linea de código.

Esa clase nunca la he utilizado. Yo lo que iba a hacer es con condiciones "if".

[MENTION=3679]wsoul[/MENTION] el Else if no valdria esta vez ni el switch tambien, el quiere enviar Multiples Emails, por eso si utilizamos else if , si se mandara el primer email ya no mandaria el segundo, el tercero...
y el lo que quiere es mandar multiples. la verdad teniendo el manual PHP completo no se porque hay estas preguntas, quieren todo listo xD
Es que solo quiero enviar uno. Dependiendo del select que elija se mandara a uno u otro. Lo mejor es elseif, asi si la primer condicion es true, ya no entra en las demas.
 
[MENTION=19944]tuka85[/MENTION] creo que no entendi bien, lo que quieres es elegir solo un select o v;rios, y enviar a multiples, [MENTION=3679]wsoul[/MENTION] si es multiple no podra utilizarse Elseif si es de una solo si se puede.
 
Aaaah ya entendi gracias [MENTION=3679]wsoul[/MENTION], entonces sii es mejor utilizar el elseif para aliviar el server y el timeload un poco
 
ya te entendi [MENTION=18791]abdellah br[/MENTION] el quiere un select con departamentos por ejemlo

comercial, soporte, publicidad

y seleccionar SOLO un correo al departamento adecuado.

es exactamente eso.
 
Llego algo tarde.
Mi forma para hacerlo sería:
En el formulario, la parte
HTML:
<select name="asunto">
    <option value=""> Información General</option>
    <option value=""> Concursos</option>
    <option value=""> Denuncias</option>
    <option value=""> Protecciones</option>
</select>
cámbiala por:
HTML:
<select name="asunto">
    <option value="general"> Información General</option>
    <option value="concursos"> Concursos</option>
    <option value="denuncias"> Denuncias</option>
    <option value="protecciones"> Protecciones</option>
</select>
Luego en el PHP sería algo así:
PHP:
<?php
// Aqui tu codigo php (el de la pagina en si)

// El array $emails tiene los emails de los distintos departamentos
$emails = array(
    'general'        =>        'email.general@whatever.com',
    'concursos'    =>        'email.concursos@whatever.com',
    'denuncias'    =>        'email.denuncias@whatever.com',
    'protecciones'    =>        'email.protecciones@whatever.com'
);

// obtenemos el asunto, "departamento" fue el mejor nombre que se me ocurrio
$departamento = isset($_POST['asunto']) ? $_POST['asunto'] : false;

// si no hay dicho departamento (posiblemente alguien se quiso pasar de listo)

if ( ! array_key_exists($departamento, $emails) )
{
    // aqui le dices que es un chico malo por hacer lo que hizo
}
else
{
    // envias el mail, este es un ejemplo, tu podrias usar alguna libreria o algo
    mail($departamento, $subject, $message);
}
 
Última edición:
@tukan85 lo has logrado?


Estoy en ello, todavia no lo terminé.

Yo habia puesto esto:

Me da fallo al enviar, es decir no me lo envia:



HTML:
<?php
if (!isset($_POST['email'])) {
?>
 <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<table width="200" border="0">
  <tr>
    <td>Nombre</td>
    <td><input name="nombre" type="text" maxlength="50" size="25"/><br /><br /></td>
  </tr>
  <tr>
    <td>Apellidos</td>
    <td><input name="ape" type="text" maxlength="50" size="25" /><br /><br /></td>
  </tr>
      <td>Asunto</td>
 <td>
 <select name="asunto">
 <option value="info"> Información General</option>
  <option value="concursos"> Concursos</option>
   <option value="denuncias"> Denuncias</option>
    <option value="protecciones"> Protecciones</option>
 </select>
 </td>
  </tr>
  <tr>
    <td>
      Email *</td>
    <td><input name="email" type="text" maxlength="50" size="25"  /><br /><br /></td>
  </tr>
  
  <tr>
    <td>Mensaje</td>
    <td><textarea cols="40" rows="6" name="mensaje"></textarea></td>
  </tr>
</table>
<input type="submit" value="Enviar" class="button">
</form>
</body>
</html>
<?php
}else{
		 if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@([0-9a-z](-?[0-9a-z])*\.)+[a-z]{2}([zmuvtg]|fo|me)?$",$_POST["email"])){
	
		echo'<p><strong>Email erroneo.</strong></p>';	
		
	}else{

  $mensaje.= "\nNombre: ". $_POST['nombre'];
  $mensaje.= "\nApellidos: ". $_POST['ape'];
  $mensaje.= "\nEmail: ".$_POST['email'];
  $mensaje.= "\nMensaje: \n".$_POST['mensaje'];
  if ($_POST['info']==1)
  {
	  $destino="info@martatorreajo.es";
  }
  elseif($_POST['concursos']==1)
  {
	  $destino="tukita@martatorreajo.es";
  }
   elseif($_POST['denuncias']==1)
  {
	  $destino="martatorreajo@gmail.com";
  }
   elseif($_POST['protecciones']==1)
  {
	  $destino="martatorreajo@hotmail.com";
  }
  $remitente = $_POST['email'];
  $asunto="Asunto: " .$_POST["asunto"]. "\n\r".
  mail($destino,$asunto,$mensaje,"FROM: $remitente");
  
  	echo'<p><strong>Mensaje enviado.</strong></p>';
	}
	
}
?>



PHP:
<?php 
$email=$_POST["mail"]; 
$cuerpo="Nombre: " .$_POST["name"]."\n\r".
$cuerpo="Apellidos: " .$_POST["ape"]."\n\r".
$asunto="Asunto: " .$_POST["asunto"]. "\n\r".
"Email: " .$_POST["mail"]."\n\r". 
"Mensaje: " .$_POST["mensaje"]."\n\r".


mail($asunto, $cuerpo, "From:$mail"); 
echo "<b><center><strong>Formulario enviado correctamente, contactaremos con usted con la mayor brevedad posible.</strong></center></b>"; 
?>

Si me decis la linea, que esta el error, darme la explicación porfa, que no me gusta pegar codigo sin saber lo que estoy haciendo.

Gracias!
 
Última edición:
Bueno al final...lo logré hacer, pero lo hice con radio button mejor:

PHP:
<?php
if (!isset($_POST['email'])) {
?>
  <form  name="form" action="<?=$_SERVER['Formulario/PHP_SELF']?>" method="post">
    <label>
      Nombre:
      <input name="nombre" type="text" /><br /><br />
    </label>
    <label>
      Teléfono:
      <input name="telefono" type="text" /><br /><br />
    </label>
    <label>
      Email:
      <input name="email" type="text" /><br /><br />
    </label>
    <input type="radio" name="Departamento" value="info@martatorreajo.es" id="Departamento_0"  /> Informacion<br />
<input type="radio" name="Departamento" value="tukita@martatorreajo.es" id="Departamento_1" /> Compras<br />
    <label>
      Mensaje:
      <textarea name="mensaje" rows="6" cols="50"></textarea><br /><br />
    </label>
    <input type="reset" value="Borrar" />
    <input type="submit" value="Enviar" />
  </form>
<?php
}else{
  $mensaje="Mensaje del formulario de contacto de APC";
  $mensaje.= "\nNombre: ". $_POST['nombre'];
  $mensaje.= "\nEmail: ".$_POST['email'];
  $mensaje.= "\nTelefono: ". $_POST['telefono'];
  $mensaje.= "\nMensaje: \n".$_POST['mensaje'];
  $asunto = "Mensaje enviado por: ".$_POST['nombre'];
  $remitente = $_POST['email'];
  $email = $_POST['Departamento'];
  $asunto = "Mensaje enviado por: ".$_POST['nombre'];
  mail($email, $asunto, $mensaje, "FROM: $remitente");
  $remitente = $_POST['email'];
 
  
  
  
?>
  <p><strong>Mensaje enviado.</strong></p>
<?php
}
?>
<script language="javascript">
function validarDepartamento(){
 var valor=0;
 for(i=0; ele=document.form.elements[i]; i++){
if (ele.type=='radio')
if (ele.checked){valor=1;break;}
 }
 if (valor==1){
document. form.submit();
 }else{
alert('Seleccione el departamento al que desea enviar el email.');
return;
 }
}// JavaScript Document
</script>

PD. Aunque el codigo de JavaScript no me sale, lo estoy arreglando 😀
 
Atrás
Arriba