S.O.S
Si en un formulario tengo la opción de elegir uno de varios remitentes, cómo hago para que esos datos le lleguen sólo al mail elegido.
Espero sus ayudas y comentarios.
Gracias.
| |||
Formulario a distintos mails S.O.S Si en un formulario tengo la opción de elegir uno de varios remitentes, cómo hago para que esos datos le lleguen sólo al mail elegido. Espero sus ayudas y comentarios. Gracias. |
| |||
Re: Formulario a distintos mails Sí, los tengo en un select. Hasta ahí te entendí, ja! Me faltaría captar como es eso de que "en la página que tiene el formulario obtener el valor y enviar el email". No sé si sirve, pero te comento que para enviar un formulario tengo los pasos en 4 archivos:
en contact.php sería el formulario, ahí tengo el select. Ahora me faltaría saber como obtengo el valor y envío el mail. Si conocés un formulario más sencillo, podría capaz entender mejor lo que me decís. Graciasssssssss |
| |||
Re: Formulario a distintos mails Pongo los códigos que estoy manejando para que sea sobre algo más concreto mi consulta, gracias. contact.php: <html xmlns="http://www.dominio.com"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Formulario de Contacto</title> <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"> <script type="text/javascript"> function stoperror(){ return true } window.onerror=stoperror </script> <link rel="stylesheet" type="text/css" href="/archives/examples/forms/contact/style.css" media="screen" /> </head> <div id="contactform" style="width: 529; height: 585"> <form id="contact-form" method="post" onsubmit="return emailCheck(this.email.value);" action="email.php"> <br><b><font face="Tahoma" color="#FFFFFF">Elija a quien desea contactar:</font></b> <select NAME="select"> <option value="mail1" SELECTED>Nombre 1</option> <option value="mail2">Nombre 2</option> <option value="mail3">Nombre 3</option> <option value="mail4">Nombre 4</option> </select> <br><br> <fieldset><legend><b><font face="Tahoma" size="2">Datos Personales »</font></b></legend> <div><font face="Tahoma"><b><label for="visitorname"><span style="color:#c00;"> <font size="2"><br> *</font></span><font size="2">Nombre y Apellido:<br> </font></label> <input type="text" name="name" id="visitorname" title="Tu Nombre" size="38" /></b></font><p> <label for="visitormail"><b> <font face="Tahoma" size="2" color="#CC0000"> </font></b> </label><font face="Tahoma"><b><label for="visitormail"> <span style="color:#FFFFFF;"><font size="2"> *</font></span><font size="2"><font color="#FFFFFF">Dirección de correo:</font><br> </font></label> <input type="text" name="email" id="visitormail" value="<?php echo $email; ?>" title="Tu dirección de correo" size="38" /></b></font></div> <div> <p><font face="Tahoma"><b><font color="#FFFFFF"><label for="subject"> <font size="2"> Motivo del mensaje:</font></label><font size="2"> </font><br> <input type="text" name="sub" id="subject" title="El motivo de tu mensaje" size="38" /></font></b></font></p> <p><font face="Tahoma"><b><label for="notes"><font size="2"> *Cuerpo del Mensaje:</font></label></b></font></p> <p><font face="Tahoma"><b> <textarea name="text" id="notes" rows="9" cols="29" onkeyup="val=this.value; if (val.length > 800) { alert('Lo siento, has sobrepasado el limite de 800 caracteres'); this.value = val.substring(0,800); } this.form.count.value=800-parseInt(this.value.length); "><?php echo $text; ?></textarea><font size="2"><br /> </font><br> <input type="submit" id="submit" name="send" value="Enviar »" title="Pulsa una vez para enviar el mensaje, y espera a la pantalla de confirmación" /></b></font></div> </fieldset><b><font size="2" face="Tahoma"> </font></b> </form> <p><b><font face="Tahoma" size="2"><span style="color:#c00;">*</span>Campos Obligatorios</font></b></p> <p><span style="color:red;font-weight:bold;"><?php echo $error ?></span></p> <script type="text/javascript" src="var.js"></script> </div> </body> </html> send.php: <?php if (empty($name)) $error .= "No has introducido tu nombre"; if (empty($surname)) $error .= "No has introducido tu apellido"; if (empty($email)) $error .= "No has introducido tu dirección de e-mail"; if (empty($sub)) $error .= "No has introducido un titulo para el mensaje"; if (empty($text)) $error .= "No has escrito nada en el cuerpo del mensaje";$str = $text; $text_len = strlen($str); if($text_len > 800) { $error .= "Lo siento, has superado el maximo de 800 caracteres en el cuerpo del mensaje. El numero total de caracteres es $text_len - por favor, acorta tu mensaje."; } if($email) { if(isset($_POST['email'])) { // $email = $email; // check to make sure email has been filled out with valid address if (preg_match('/^[-!#$%&\'*+\\.\/0-9=?A-Z^_`{|}~]+@([-0-9A-Z]+\.)+([0-9A-Z]){2,4}$/i', trim($email))) { //do nothing the syntax looks good } else {$error .= "Tu dirección de e-mail contiene un error."; }//set error code // check for valid domain name $ok = TRUE; $ok = eregi( "^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$", $email, $check); $ok = getmxrr(substr(strstr($check[0], '@'), 1), $dummy); if($ok === false) { $host = substr($email, strpos($email, '@') + 1); if(gethostbyname($host) != $host) { $ok = true; } if ($ok != true) {$error .= "La direccion de e-mail no parece correcta, por favor, compruebalo"; } // end of check } }} // end of email check if($error) { include("index.php"); } else { include("email.php"); } ?> |
| |||
Re: Formulario a distintos mails Acá están los que faltan: email.php: <html> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Gracias por tu mensaje.</title> <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"> </head> <body> <div id="contactform"> <?php $headers = "From: $email"; $message .= " De: $name $surname E-Mail: $email Telefono: $phone Codigo Postal: $postcode Pagina Web: $url Desde : $title ____________________________________ $text "; $message2 .= " Gracias por enviar el mensaje con el sujeto: $sub.\n Para tu referencia, se ha adjuntado el texto original del mensaje al final de este correo.\n Tu mensaje original era $text "; $headers2 .= "From: [email protected]\n"; $sub2.="Re: $sub"; ?> <h2>Gracias!</h2> <p>Tu mensaje ha sido enviado, usando el e-mail de remitente </p> <p><span style="color:black;font-size:100%;font-weight:bold;"><?php print $email; ?></span></p> <p>Si no es correcto, <script type='text/javascript'> document.write('<a href="javascript:history.go(-1);">vuelve atras</a>'); </script> <noscript>vuelve atras</noscript> y envialo de nuevo</p> <script type='text/javascript'> document.write('<p class="details"><a href="javascript:history.go(-2);">Volver a la pagina de inicio.</a></p>'); </script> <script type='text/javascript'> setTimeout('history.go(-2)', 9000); </script> <noscript> <p class="details">Pulsa el boton "atras" en tu navegador para volver a la pagina anterior.</p> </noscript> <?php $message = stripslashes($message); $message2 = stripslashes($message2); $message = strip_tags ($message); $message2 = strip_tags ($message2); mail($select, $sub, $message, $headers); mail("[email protected]", $sub2, $message2, $headers2); ?> </div> </body> </html> var.js: function emailCheck (emailStr) { var checkTLD=1; var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|c oop|info|pro|museum)$/; var emailPat=/^(.+)@(.+)$/; var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]"; var validChars="\[^\\s" + specialChars + "\]"; var quotedUser="(\"[^\"]*\")"; var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/; var atom=validChars + '+'; var word="(" + atom + "|" + quotedUser + ")"; var userPat=new RegExp("^" + word + "(\\." + word + ")*$"); var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$"); var matchArray=emailStr.match(emailPat); if (matchArray==null) { alert("Tu dirección de correo no aparece o es incorrecta (comprueba @ y .'s)"); return false; } var user=matchArray[1]; var domain=matchArray[2]; for (i=0; i<user.length; i++) { if (user.charCodeAt(i)>127) { alert("Tu dirección de correo contiene caracteres no validos."); return false; } } for (i=0; i<domain.length; i++) { if (domain.charCodeAt(i)>127) { alert("El dominio de la dirección introducida contiene caracteres no validos."); return false; } } if (user.match(userPat)==null) { alert("La dirección de correo parece incorrecta, por favor compruebalo."); return false; } var IPArray=domain.match(ipDomainPat); if (IPArray!=null) { for (var i=1;i<=4;i++) { if (IPArray[i]>255) { alert("La dirección IP de destino no es correcta!"); return false; } } return true; } var atomPat=new RegExp("^" + atom + "$"); var domArr=domain.split("."); var len=domArr.length; for (i=0;i<len;i++) { if (domArr[i].search(atomPat)==-1) { alert("La dirección de correo parece incorrecta, por favor compruebalo, incluyendo el uso incorrecto de signos de puntuación, comas , o puntos [.] al final de la dirección."); return false; } } if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) { alert("Tu dirección de correo debe terminar en un dominio o dos letras " + "país."); return false; } if (len<2) { alert("Falta el nombre del host en tu dirección de correo - compruebalo. O debes de haber añadido un espacio en blanco al final de la dirección - corrije el error e intentalo de nuevo."); return false; } return true; } |
| |||
Re: Formulario a distintos mails Bueno, en caso que este formulario sea demasiado complejo para un sencillo envío de formulario, también acepto otros formularios que me puedan pasar, y hacer más fácil utilizar el <select> Graciasssssssss |
| ||||
Re: Formulario a distintos mails Sencillo es este codigo:
Código:
tomado de http://surlandia.com/2006/11/08/evit...rmularios-php/ <?php $to="[email protected]";//direccion destinataria "hardcoded" if (!isset($_POST["send"])){ // si no vienen datos-> mostrar el form ?> <form method="POST" action="<?=$_SERVER[’PHP_SELF’];?>"> To: [email protected] From: <input type="text" name="sender"> Subject : <input type="text" name="subject"> Message : <textarea name="message" rows="10" cols="60" lines="20"></textarea> <input type="submit" name="send" value="Send"> </form> <? }else{ // si vienen datos POST.. procesamos y enviamos los datos del form $from=$_POST[’sender’]; // send mail : if (mail($to,$_POST[’subject’],$_POST[’message’],"From: $from\n")){ // si se ha enviado correctamente mostramos un mensaje de OK echo "Su mensaje se ha enviado correctamente a $to."; }else{ // Se ha producido un error echo "Su mensaje no se ha podido enviar"; } } ?> |
| ||||
Re: Formulario a distintos mails Aca hay un ejemplo sencillo
Código:
Te recomiendo que te des una vuelta por esta pagina http://surlandia.com/2006/11/08/evit...rmularios-php/ ya que te explican como evitar el spam en tu formulario de envio de correo <?php $to="[email protected]";//direccion destinataria "hardcoded" if (!isset($_POST["send"])){ // si no vienen datos-> mostrar el form ?> <form method="POST" action="<?=$_SERVER[’PHP_SELF’];?>"> To: [email protected] From: <input type="text" name="sender"> Subject : <input type="text" name="subject"> Message : <textarea name="message" rows="10" cols="60" lines="20"></textarea> <input type="submit" name="send" value="Send"> </form> <? }else{ // si vienen datos POST.. procesamos y enviamos los datos del form $from=$_POST[’sender’]; // send mail : if (mail($to,$_POST[’subject’],$_POST[’message’],"From: $from\n")){ // si se ha enviado correctamente mostramos un mensaje de OK echo "Su mensaje se ha enviado correctamente a $to."; }else{ // Se ha producido un error echo "Su mensaje no se ha podido enviar"; } } ?> |
| |||
Re: Formulario a distintos mails Gracias Sergest!, ahora creo que se me hace más fácil probar lo de Gator con el select. Igual si me quieren ahorrar la prueba y error acepto que me digan como en este formulario de Sergest, agregando un select hago que el formulario sea enviado a la dirección del nombre elegido. GRACIAS! |