Foros del Web » Programando para Internet » PHP »

Un problemita con funcion mail()

Estas en el tema de Un problemita con funcion mail() en el foro de PHP en Foros del Web. El problemqa e sel siguiente , tengo un formulario qeu llam a auna pagina recomendar.php. Código: <form action="recomendar/recomendar.php" method="post"> <input type="hidden" name="url" value="<? echo $_SERVER['HTTP_REFERER']; ...
  #1 (permalink)  
Antiguo 15/03/2008, 23:12
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Un problemita con funcion mail()

El problemqa e sel siguiente , tengo un formulario qeu llam a auna pagina recomendar.php.

Código:
<form action="recomendar/recomendar.php" method="post">
<input type="hidden" name="url" value="<? echo $_SERVER['HTTP_REFERER']; ?>">
<center>
  <span class="style1">Recomenda Esto a un amigo</span>
</center>
<table width="100%" border="1" bgcolor="#484848">
  <tr>
    <td width="50%">
      <div align="center">Tus Datos:</div></td>
    <td width="50%"><div align="center">Datos De tu Amigo:<br>
    </div></td>
  </tr>
  <tr>
    <td><div align="center">Tu Nombre: 
      <input type="text" name="tunombre">
    </div></td>
    <td>
      <div align="center">Su Nombre: 
      <input type="text" name="sunombre">
    </div></td>
  </tr>
  <tr>
    <td><div align="center">&nbsp;Tu Email: 
        <input type="text" name="tuemail">
      </div></td>
    <td><div align="center">&nbsp;Su Email: 
      <input type="text" name="suemail">
    </div></td>
  </tr>
  <tr>
  <td><div align="center">
    &nbsp;
  </div></td>
   <td><div align="center">
    <input type="submit" name="enviar" value=" Enviar ">
  </div></td>
  </tr>
</table>

recomendar.php

Código PHP:
<?php
if (isset($_POST['url']) && isset($_POST['enviar'])){
$url_recomendado$_SERVER['HTTP_REFERER'];
$redireccion=$_SERVER['HTTP_REFERER'];
//para el envío en formato HTML
// Para enviar correo HTML, la cabecera Content-type debe definirse
$headers  'MIME-Version: 1.0' "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";
//dirección del remitente
$headers .= 'From: Recomendados Radiometal <[email protected]>' "\r\n";
//dirección de respuesta, si queremos que sea distinta que la del remitente
$headers .= "Reply-To: [email protected]\r\n";
//el que envia
$tuemail $_POST['tuemail'];
$tunombre $_POST['tunombre'];

// el que recibe
$sunombre $_POST['sunombre'];
$suemail $_POST['suemail'];

$asunto "Hola, " .$sunombre" Tu amigo, ".$tunombre." Te Recomendo Esto..." ;
$mensaje"Hola, " .$sunombre"\r\n Tu amigo " .$tunombre."\r\n Te recomendo visitar el siguiente enlace \r\n\r\n Click En El Enlace Para ingresar\r\n" .$url_recomendado."\r\n" ;
mail($suemail,$asunto,$mensaje,"MIME-Version: 1.0 \r\n Content-type: text/html; charset=iso-8859-1 \r\n From: [email protected]\r\nContent-type: text/html\r\n");
header("Location: $redireccion");
}
// 
?>
Todo lindo , funciona barbaro , salvo uno sproblemas .

Po rejemplo si uso





Código PHP:
mail($suemail,$asunto,$mensaje,"MIME-Version: 1.0 \r\n Content-type: text/html; charset=iso-8859-1 \r\n From: [email protected]\r\nContent-type: text/html\r\n"); 

M ellega el correo en formato html y sel link se ve barbaro con los saltos de line ay todo. Pero el correo sale con el nomrbe del servidor y no con [email protected] como deberia llegar.


Opcion 2 usar los $headers qu eestan ahi

Código PHP:
$headers  'MIME-Version: 1.0' "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";
//dirección del remitente
$headers .= 'From: Recomendados miweb<[email protected]>' "\r\n";
//dirección de respuesta, si queremos que sea distinta que la del remitente
$headers .= "Reply-To: [email protected]\r\n"

Ose al funcoin mail quedarisa asi.

Código PHP:
mail($suemail,$asunto,$mensaje,$headers
Asi me llega el correo con la direccion de [email protected], pero no me muestra el mail en html .

Alguna ayuda?

Debe ser algo fasil pero h eintentado con distintos headers y distintas formas y weno hast aahor aconsegui eso y no se por que.


Salu2
  #2 (permalink)  
Antiguo 16/03/2008, 10:48
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: Un problemita con funcion mail()

pruebas esto EmaD:


Código PHP:

         $row   
mysql_fetch_array($result); //esto lo tengo despoes del query para meter $result de la BD en un  array en $row
    
          
     
          // Datos del email

$nombre_origen    "Cevit";
$email_origen     "mi mail de [email protected]";
$email_copia      "mi mail de [email protected]";
$email_ocultos    "mi mail de [email protected]";
//$email_destino    = "".$row['email']."";  //recojo la variable del array en $row
$email_destino    "mi mail de [email protected]";  //cambiar esta linea por la de encima cuando termine la aplicacion


$asunto           "".$row['usuario']." Asunto que sea.";

$mensaje          '<table width="629" border="0" cellspacing="1" cellpadding="2">
  <tr>
    <td width="623" align="left"></td>
  </tr>
  <tr>
    <td bgcolor="#2EA354"><div style="color:#FFFFFF; font-size:14; font-family: Arial, Helvetica, sans-serif; text-transform: capitalize; font-weight: bold;"><strong>   '
.$row['usuario'].'  su clave a sido recuperada</strong></div></td>
  </tr>
  <tr>
    <td height="95" align="left" valign="top"><div style=" color:#000000; font-family:Arial, Helvetica, sans-serif; font-size:12px; margin-bottom:3px;"> '
.$row['usuario'].'</strong>, usted ordeno recuperar su clave..<br>
          <strong>Su Clave es : </strong>'
.$row['password'].'<br>
    </div>
    </td>
  </tr>
</table>'
;



$formato          "html";

//*****************************************************************//
$headers  "From: $nombre_origen <$email_origen> \r\n";
$headers .= "Return-Path: <$email_origen> \r\n";
$headers .= "Reply-To: $email_origen \r\n";


$headers .= "X-Sender: $email_origen \r\n";

$headers .= "X-Priority: 3 \r\n";
$headers .= "MIME-Version: 1.0 \r\n";
$headers .= "Content-Transfer-Encoding: 7bit \r\n";

//*****************************************************************//
 
if($formato == "html")
 { 
$headers .= "Content-Type: text/html; charset=iso-8859-1 \r\n";  }
   else
    { 
$headers .= "Content-Type: text/plain; charset=iso-8859-1 \r\n";  }

if (@
mail($email_destino$asunto$mensaje$headers)) 
    { echo 
"Le hemos enviado un correo electronico con sus datos de registro. ";  } 
     else 
    {  echo 
"Error, No se ha establecido la conexión con el servidor, por favor intentelo de nuevo pasados unos minutos. "; }

    }    
    
     }
     
     
        
        
?></td>
        </tr>
      </table>
      
     
      <table width="2" border="0" align="left" cellpadding="0" cellspacing="0">
        <tr>
          <td height="298">&nbsp;</td>
        </tr>
      </table>
      
      <table width="173" height="189" border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td height="189" align="left" valign="top">
          
    </table></td>
  </tr>
</table> 
Pruebalo, este codigo lo saque de aqui, de FOROS DEL WEB y me va bien

Un saludo
  #3 (permalink)  
Antiguo 17/03/2008, 01:15
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Re: Un problemita con funcion mail()

Código PHP:
<?php
if (isset($_POST['url']) && isset($_POST['enviar'])){
// compones el URL completo .. con el HOST (htt://www.tal.tal + lo que devuelve PHP_SELF que es la ruta y nombre del script PHP que se está ejecutando y ya lo tomastes en tu formulario que es donde incluyes ese código del formulario ..
$url_recomendado$_SERVER['HTTP_REFERER'];
$redireccion=$_SERVER['HTTP_REFERER'];
$nombre_origen     "Radiometal"
$email_ocultos    "[email protected]"
$email_origen"[email protected]";
//para el envío en formato HTML
// Para enviar correo HTML, la cabecera Content-type debe definirse
//*****************************************************************//
$headers  "From: $nombre_origen <$email_origen> \r\n";
$headers .= "Return-Path: <$email_origen> \r\n";
$headers .= "Reply-To: $email_origen \r\n";


$headers .= "X-Sender: $email_origen \r\n";

$headers .= "X-Priority: 3 \r\n";
$headers .= "MIME-Version: 1.0 \r\n";
$headers .= "Content-Transfer-Encoding: 7bit \r\n";
$headers .= "Content-Type: text/html; charset=iso-8859-1 \r\n"

//*****************************************************************// 
$tuemail $_POST['tuemail'];
$tunombre $_POST['tunombre'];

// el que recibe
$sunombre $_POST['sunombre'];
$suemail $_POST['suemail'];

$asunto "Hola, " .$sunombre" Tu amigo, ".$tunombre." Te Recomendo Esto..." ;
$mensaje"Hola, " .$sunombre"\r\n Tu amigo " .$tunombre."\r\n Te recomendo visitar el siguiente enlace \r\n\r\n Click En El Enlace Para ingresar\r\n" .$url_recomendado."\r\n" ;
mail($suemail,$asunto,$mensaje,$headers);
header("Location: $redireccion");
}
// 
?>

Ahora quedo asi me lleg abien pero sin formato html , como seria la linea esta para qeu llegue en html?

Código PHP:
$mensaje"Hola, " .$sunombre"\r\n Tu amigo " .$tunombre."\r\n Te recomendo visitar el siguiente enlace \r\n\r\n Click En El Enlace Para ingresar\r\n" .$url_recomendado."\r\n" 

Salu2 Gracias
  #4 (permalink)  
Antiguo 17/03/2008, 01:31
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Re: Un problemita con funcion mail()

Gracias ya esta solucionado , ahi quedo el codigo por si lo quieren usar para recomendar noticias por ejemplo en una web o esas cosas.

Código PHP:
<?php
if (isset($_POST['url']) && isset($_POST['enviar'])){
// compones el URL completo .. con el HOST (htt://www.tal.tal + lo que devuelve PHP_SELF que es la ruta y nombre del script PHP que se está ejecutando y ya lo tomastes en tu formulario que es donde incluyes ese código del formulario ..
$url_recomendado$_SERVER['HTTP_REFERER'];
$redireccion=$_SERVER['HTTP_REFERER'];
$nombre_origen     "Recomendados web"
$email_ocultos    "[email protected]"
$email_origen"[email protected]";
//para el envío en formato HTML
// Para enviar correo HTML, la cabecera Content-type debe definirse
//*****************************************************************//
$headers  "From: $nombre_origen <$email_origen> \r\n";
$headers .= "Return-Path: <$email_origen> \r\n";
$headers .= "Reply-To: $email_origen \r\n";


$headers .= "X-Sender: $email_origen \r\n";

$headers .= "X-Priority: 3 \r\n";
$headers .= "MIME-Version: 1.0 \r\n";
$headers .= "Content-Transfer-Encoding: 7bit \r\n";
$headers .= "Content-Type: text/html; charset=iso-8859-1 \r\n"

//*****************************************************************// 
$tuemail $_POST['tuemail'];
$tunombre $_POST['tunombre'];

// el que recibe
$sunombre $_POST['sunombre'];
$suemail $_POST['suemail'];

$asunto "Hola, " .$sunombre" Tu amigo, ".$tunombre." Te Recomendo Esto..." ;
$mensaje"<center><img src='imagen'><br><br>Hola, <b>" .$sunombre
"</b><br> Tu amigo <b>" .$tunombre."--".$tuemail.
//"</b><br> Su Correo Es <b>" .$tuemail.
"</b><br> Te recomendo visitar el siguiente enlace <br> Click En El Enlace Para ingresar<br>
<a href='"
.$url_recomendado."'>".$url_recomendado."</a><br><br></center>" ;

mail($suemail,$asunto,$mensaje,$headers);
header("Location: $redireccion");
}
// 
?>

Editado : por si lo quieren completo ahi esta funciona 10 puntos

Salu2

Última edición por EmaD; 17/03/2008 a las 01:48
  #5 (permalink)  
Antiguo 17/03/2008, 09:32
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Re: Un problemita con funcion mail()

Alguien me ayuda con algun metodo de validacion de los campos del formulario , solo para controlar qeu no esten vacios digo. Algo sencillo como para empezar ya que he probado algunos y no doy pie con bola.

Salu2 Gracias
  #6 (permalink)  
Antiguo 17/03/2008, 09:40
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Un problemita con funcion mail()

Un ejemplo supongamos que estas enviando los datos por POST:

Código PHP:
foreach( $_POST as $datos )
{
   if( empty(
$datos) )
   {
       echo 
"Hay un campo vacio en el formulario";
       exit();
    }


Saludos.
  #7 (permalink)  
Antiguo 18/03/2008, 10:47
Avatar de hackteam  
Fecha de Ingreso: diciembre-2007
Mensajes: 67
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Un problemita con funcion mail()

si quieres te puedo hacer el codigo en javascript para validarlo, pero necesito los campos y el nombre de tu formulario, saludos!
  #8 (permalink)  
Antiguo 18/03/2008, 10:53
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Re: Un problemita con funcion mail()

Lo scampos estan en el primer post del tema arriba , gracias.

Salu2
  #9 (permalink)  
Antiguo 18/03/2008, 11:13
Avatar de hackteam  
Fecha de Ingreso: diciembre-2007
Mensajes: 67
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Un problemita con funcion mail()

Bueno, tu formulario no tiene nombre, asi que te invito a darle uno xD

<form action="recomendar/recomendar.php" method="post" name="form">

luego para enviar, yo lo hago con un button que llama a la funcion validar, (con submit no se hacerlo) asi que tienes que cambiar esta linea <input type="submit" name="enviar" value=" Enviar "> por esta:

<input name="enviar" type="button" onClick="validar();" value="Enviar">

en un archivo externo colocas este codigo (en la carpeta del index) validar.js y en el archivo htm de tu formulario despues de tu head colocas esto:

<script type="text/javascript" src="validar.js"></script>

este es el codigo del .js

function validar()
{

if ( (document.form.url.value =="") ) // puedes ver con expresiones regulares para mejorarlo
{
alert("Url vacio, debe ingresarlo")
document.form.url.focus()
return (false);
}

if( document.form.tunombre.value.length > 30)
{
alert("Nombre invalido, muy largo")
document.form.tunombre.focus()
return (false);
}
else if (document.form.tunombre.value.length < 4)
{
alert("Nombre invalido, muy corto")
document.form.tunombre.focus()
return (false);
}

if( document.form.sunombre.value.length > 30)
{
alert("Nombre invalido, muy largo")
document.form.tunombre.focus()
return (false);
}
else if (document.form.sunombre.value.length < 4)
{
alert("Nombre invalido, muy corto")
document.form.sunombre.focus()
return (false);
}
if ( !(/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(document.form.tuemail.value)) )
{
alert("e-mail invalido")
document.form.tuemail.focus()
return (false);
}
if ( !(/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(document.form.suemail.value)) )
{
alert("e-mail invalido")
document.form.suemail.focus()
return (false);
}
document.form.submit()
}

sino te funciona o no lo entienes me avisas, vemos que pasa, saludos!
  #10 (permalink)  
Antiguo 18/03/2008, 11:36
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Re: Un problemita con funcion mail()

Hola funciona , comprueba bien pero cuando envia a la pàgina recomendar.php queda ahi la pagina en blanco y no me envia el correo.

No se que sera.

Salu2
  #11 (permalink)  
Antiguo 18/03/2008, 11:48
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: Un problemita con funcion mail()

Si solo quieres saber si los campos estan vacios o no lo puedes hacer agregando mas IF al que ya tienes,

Código PHP:
if (isset($_POST['url']) && isset($_POST['enviar'])){ 
if(
$tunombre==NULL|$sunombre==NULL|$tuemail==NULL|$suemail==NULL) {
        echo 
"un campo está vacio.";
        
    }else{

//despues el resto del codigo 
Y acuerdate de cerrar el corchete } del ELSE al final , prueba asi, aver si te funciona.

Un saludo
  #12 (permalink)  
Antiguo 18/03/2008, 12:17
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Re: Un problemita con funcion mail()

Gracias jaronu no es la mejor solucion pero qeudo andando , lo hice asi.


Código PHP:
?php

if (isset($_POST['url']) && isset($_POST['enviar'])){
$tuemail $_POST['tuemail'];
$tunombre $_POST['tunombre'];

// el que recibe
$sunombre $_POST['sunombre'];
$suemail $_POST['suemail'];

if(
$tunombre==NULL|$sunombre==NULL|$tuemail==NULL|$suemail==NULL) { 
$url_recomendado$_SERVER['HTTP_REFERER'];
    echo 
"<html><body bgcolor='#000000' text='#FFFFFF'><center>";
        echo 
"<b>Algun campo esta vacio Por Favor Presta Atencion.<b><br>"
        echo 
"<a href='javascript:history.back();'>volver</a>";
         
    }else{ 


//El resto del codigo 
Salu2 Gracias gente nuevamente , muy buena onda.
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 16:15.