Foros del Web » Programando para Internet » PHP »

Formulario a distintos mails

Estas en el tema de Formulario a distintos mails en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 13/08/2007, 19:12
 
Fecha de Ingreso: agosto-2007
Mensajes: 114
Antigüedad: 16 años, 8 meses
Puntos: 1
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.
  #2 (permalink)  
Antiguo 13/08/2007, 19:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Formulario a distintos mails

Pues si los tienes en un select solo es cuestion de enviar el valor actual del select y en la pagina donde tienes el formulario obtener el valor y ahi enviar el email.

Saludos.
  #3 (permalink)  
Antiguo 13/08/2007, 19:56
 
Fecha de Ingreso: agosto-2007
Mensajes: 114
Antigüedad: 16 años, 8 meses
Puntos: 1
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:
  • contact.php
  • email.php
  • send.php
  • var.js

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
  #4 (permalink)  
Antiguo 13/08/2007, 20:13
 
Fecha de Ingreso: agosto-2007
Mensajes: 114
Antigüedad: 16 años, 8 meses
Puntos: 1
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 &raquo;</font></b></legend>
<div><font face="Tahoma"><b><label for="visitorname"><span style="color:#c00;">
<font size="2"><br>
&nbsp;&nbsp;&nbsp; *</font></span><font size="2">Nombre y Apellido:<br>
&nbsp;&nbsp;&nbsp;&nbsp; </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">&nbsp;&nbsp; </font></b>
</label><font face="Tahoma"><b><label for="visitormail">
<span style="color:#FFFFFF;"><font size="2">&nbsp;*</font></span><font size="2"><font color="#FFFFFF">Direcci&oacute;n de correo:</font><br>
&nbsp;&nbsp;&nbsp;&nbsp; </font></label>
<input type="text" name="email" id="visitormail" value="<?php echo $email; ?>" title="Tu direcci&oacute;n de correo" size="38" /></b></font></div>
<div>&nbsp;<p><font face="Tahoma"><b><font color="#FFFFFF"><label for="subject">
<font size="2">&nbsp;&nbsp;&nbsp;&nbsp; Motivo del mensaje:</font></label><font size="2">
</font><br>
&nbsp;&nbsp;&nbsp;
<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">&nbsp;&nbsp;&nbsp;&nbsp; *Cuerpo del Mensaje:</font></label></b></font></p>
<p><font face="Tahoma"><b>&nbsp;&nbsp;&nbsp;
<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 &raquo;" title="Pulsa una vez para enviar el mensaje, y espera a la pantalla de confirmaci&oacute;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&oacute;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 &gt; 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&oacute;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");
}
?>
  #5 (permalink)  
Antiguo 13/08/2007, 20:14
 
Fecha de Ingreso: agosto-2007
Mensajes: 114
Antigüedad: 16 años, 8 meses
Puntos: 1
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&oacute;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&oacute;n de correo contiene caracteres no validos.");
return false;
}
}
for (i=0; i&lt;domain.length; i++) {
if (domain.charCodeAt(i)&gt;127) {
alert("El dominio de la direcci&oacute;n introducida contiene caracteres no validos.");
return false;
}
}
if (user.match(userPat)==null) {
alert("La direcci&oacute;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&oacute;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&oacute;n de correo parece incorrecta, por favor compruebalo, incluyendo el uso incorrecto de signos de puntuaci&oacute;n, comas , o puntos [.] al final de la direcci&oacute;n.");
return false;
}
}
if (checkTLD && domArr[domArr.length-1].length!=2 &&
domArr[domArr.length-1].search(knownDomsPat)==-1) {
alert("Tu direcci&oacute;n de correo debe terminar en un dominio o dos letras " + "pa&iacute;s.");
return false;
}
if (len<2) {
alert("Falta el nombre del host en tu direcci&oacute;n de correo - compruebalo. O debes de haber a&ntilde;adido un espacio en blanco al final de la direcci&oacute;n - corrije el error e intentalo de nuevo.");
return false;
}
return true;
}
  #6 (permalink)  
Antiguo 13/08/2007, 20:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Formulario a distintos mails

Puedes usar:
Código PHP:
$to $_POST['nombre_de_tu_select'];
mail$to, .... ); 
Saludos.
  #7 (permalink)  
Antiguo 13/08/2007, 20:45
 
Fecha de Ingreso: agosto-2007
Mensajes: 114
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: Formulario a distintos mails

Dentro de cuales de los archivos que tengo pondría ese código?

Graciassssssss
  #8 (permalink)  
Antiguo 14/08/2007, 17:46
 
Fecha de Ingreso: agosto-2007
Mensajes: 114
Antigüedad: 16 años, 8 meses
Puntos: 1
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
  #9 (permalink)  
Antiguo 14/08/2007, 18:10
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
Re: Formulario a distintos mails

Sencillo es este codigo:
Código:
<?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";
}
}
?>
tomado de http://surlandia.com/2006/11/08/evit...rmularios-php/
  #10 (permalink)  
Antiguo 14/08/2007, 18:14
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
Re: Formulario a distintos mails

Aca hay un ejemplo sencillo
Código:
<?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";
}
}
?>
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
  #11 (permalink)  
Antiguo 19/08/2007, 18:11
 
Fecha de Ingreso: agosto-2007
Mensajes: 114
Antigüedad: 16 años, 8 meses
Puntos: 1
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!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:45.