Foros del Web » Programando para Internet » PHP »

SMTP y mail

Estas en el tema de SMTP y mail en el foro de PHP en Foros del Web. Hola me han dicho que para enviar un mail se necesitan otras cosas aparte de la funcion por ejemplo yo hago esto Código PHP: <? ...
  #1 (permalink)  
Antiguo 28/01/2004, 08:40
 
Fecha de Ingreso: diciembre-2003
Ubicación: Quillota
Mensajes: 196
Antigüedad: 20 años, 3 meses
Puntos: 0
SMTP y mail

Hola me han dicho que para enviar un mail se necesitan otras cosas aparte de la funcion
por ejemplo yo hago esto
Código PHP:
<?
if (mail("[email protected]","HOla","hola"))
     { echo 
"<br>si envia";
      }
      else  {echo 
"no envia";}
?>
Me dice que "si envia", pero cuando reviso el mail no llego nada.
He leido en el foro que se necesita un stmp y vi que usaban unas funciones ini_set("SMTP","smtp.blabla.blabla.com");
como puedo saber cual es el smtp que tengo en mi servidor o debo instalar uno?
gracias
  #2 (permalink)  
Antiguo 28/01/2004, 08:49
Avatar de maralbust@netsc  
Fecha de Ingreso: julio-2003
Ubicación: Santiago
Mensajes: 242
Antigüedad: 20 años, 8 meses
Puntos: 0
No se si te sirva, este es el que uso yo y si lo envia ( con el truco de que el correo exista o no exista funciona igual)


este es el codigo....
Código PHP:
<?
if (!$HTTP_POST_VARS){
?>
        </p>
        <form name="enviar" action="contacto.php" method="post">
  <div align="center">
    <br><br><br><table width="46%" border="0" cellpadding="0" cellspacing="0">
      <tr> 
        <td rowspan="2">Nombre:</td>
        <td><input type=text name="nombre" size=16></td>
      </tr>
      <tr> 
        <td><img src="archivos_index/spacer.gif" width="1" height="5"></td>
      </tr>
      <tr> 
        <td rowspan="2">Email:</td>
        <td><input type="text" name="email" size="16"></td>
      </tr>
      <tr> 
        <td><img src="archivos_index/spacer.gif" width="1" height="5"></td>
      </tr>
      <tr> 
        <td valign="top">Comentarios:</td>
        <td><textarea name=coment cols=32 rows=6></textarea></td>
      </tr>
    </table>
    <br>
            <br>
    <input type=submit value="Enviar" class="">
     <br><br>       <?
}else{
    
//Estoy recibiendo el formulario, compongo el cuerpo
    
$cuerpo "Formulario enviado\n";
    
$cuerpo .= "Nombre: " $HTTP_POST_VARS["nombre"] . "\n";
    
$cuerpo .= "Email: " $HTTP_POST_VARS["email"] . "\n";
    
$cuerpo .= "Comentarios: " $HTTP_POST_VARS["coment"] . "\n";

    
//mando el correo...
    
mail("[email protected]","Formulario recibido",$cuerpo);
    echo 
"<br><br><br><br>";
    
//doy las gracias por el envío
    
echo "Gracias por rellenar el formulario. Se ha enviado correctamente.";
}
    echo 
"<br><br>";
    echo 
"<input type='submit' value='Volver' onclick='window.history.back()'>";
?>

Saludos


..:: Bee-Freaks ::..
__________________
"La imaginacion es el limite"
bee-freaks
  #3 (permalink)  
Antiguo 28/01/2004, 08:56
 
Fecha de Ingreso: diciembre-2003
Ubicación: Quillota
Mensajes: 196
Antigüedad: 20 años, 3 meses
Puntos: 0
No si ese no creo que sea el problema, lo que pasa es que no me manda el mail cuando pongo el mail dentro de un if y supuestamente lo manda
  #4 (permalink)  
Antiguo 28/01/2004, 09:11
Avatar de maralbust@netsc  
Fecha de Ingreso: julio-2003
Ubicación: Santiago
Mensajes: 242
Antigüedad: 20 años, 8 meses
Puntos: 0
el yo@hola, hola y hola son campos de un form, no entiendo.
Por que ahi la verdad no haces nada solo le dices si esto es asi go si no stop.


Que alguien me corrovore o me corriga
__________________
"La imaginacion es el limite"
bee-freaks
  #5 (permalink)  
Antiguo 28/01/2004, 09:13
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Hola,

PHP no "envia" el mensaje. Solo se lo pasa al servidor SMTP o al programa sendmail (en *nix). Si mail() devuelve true, es que se lo ha pasado con exito al servidor SMTP o al sendmail. Nada mas. Que ese email llegue a su destino depende de multitud de variables. Cualquier fallo o filtro antispam/antivirus/seguridad que haya entre tu SMTP o tu sendmail, y la bandeja de destino, puede eliminar tu email y hacer que no llege a su destino. Yo incluso he recibido emails un par de semanas despues de que se enviase (¿donde habra estado? ¿donde estaran todos los emails que se pierden? ¿en el cielo de los emails? ).

Prueba con otras direcciones de correo (sobre todo procura que no sean de hotmail). Si te llega a una cuenta, el problema no esta en la salida (tu script y tu SMTP), si no en la recepcion (la cuenta destino). Probablemente algun filtro antispam. En el foro ya se ha comentado algun metodo para "saltarse" los filtros antispam. Busca por "antispam" o "spam".

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 28/01/2004, 09:15
 
Fecha de Ingreso: diciembre-2003
Ubicación: Quillota
Mensajes: 196
Antigüedad: 20 años, 3 meses
Puntos: 0
Bueno solo me funciona para el mail del dominio osea solo llega a [email protected], pero no llega ni a yahoo ni a hotmail
  #7 (permalink)  
Antiguo 28/01/2004, 09:19
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 5 meses
Puntos: 11
en www.php.net/manual/es/function.mail.php aparece alguien diciendo que las cabeceras que él coloca al mensaje hacen que pase cualquier tipo de filtro antispam (habrá que creerle). Hechale una mirada.
__________________
Dedicado a proyectos web, actualmente desarrollando un sistema de diseño de flyers online muy fácil de usar.
  #8 (permalink)  
Antiguo 28/01/2004, 09:20
 
Fecha de Ingreso: diciembre-2003
Ubicación: Quillota
Mensajes: 196
Antigüedad: 20 años, 3 meses
Puntos: 0
me han dicho que tengo que modificar el php ini por el stmp pero me dijieron que se puede hacer desde la aplicacion con algo asi
ini_set("SMTP","smtp.algo.com"); esto es correcto?

Estoy probando de un mail, sera spam?
  #9 (permalink)  
Antiguo 28/01/2004, 09:25
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 5 meses
Puntos: 11
creo que ini_set() es para cambiar las opciones que tienes en php.ini. Es decir, si estan bien esas opciones en php.ini, no sirve de nada hacer lo mismo con ini_set().
__________________
Dedicado a proyectos web, actualmente desarrollando un sistema de diseño de flyers online muy fácil de usar.
  #10 (permalink)  
Antiguo 28/01/2004, 09:27
Avatar de maralbust@netsc  
Fecha de Ingreso: julio-2003
Ubicación: Santiago
Mensajes: 242
Antigüedad: 20 años, 8 meses
Puntos: 0
en todo caso con el mio tengo problemas con hotmail, asi q que no te asuste s es microsoft el del problema
__________________
"La imaginacion es el limite"
bee-freaks
  #11 (permalink)  
Antiguo 28/01/2004, 09:32
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Cita:
Mensaje Original por Scrubb
me han dicho que tengo que modificar el php ini por el stmp pero me dijieron que se puede hacer desde la aplicacion con algo asi
ini_set("SMTP","smtp.algo.com"); esto es correcto?

Estoy probando de un mail, sera spam?
Primero, ¿quien te lo ha dicho? ¿Y para que? Tu mismo lo has dicho, si envia el email y lo recibes en una cuenta normal.

Pero dices que te da problemas hotmail y yahoo. Si puedes, prueba en otra cuenta que no sea hotmal y yahoo.

Hotmail tiene un filtro antispam bastante severo (elimina incluso boletines legales). Probablemente sea que algunas de las cabeceras que se envian con el mensaje con "concuerdan". Por ejemplo, no especificas cabecera FROM, por la que se usa la de defecto del servidor. Y eso puede ser admin@localhost, que no concuerda con el dominio del SMTP de origen.

Revisa lo que te comento claudiovega.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #12 (permalink)  
Antiguo 28/01/2004, 10:05
 
Fecha de Ingreso: diciembre-2003
Ubicación: Quillota
Mensajes: 196
Antigüedad: 20 años, 3 meses
Puntos: 0
probe todo mail que podria probar y solo envia a los que tienen el mismo dominio.......
gracias por su ayuda
  #13 (permalink)  
Antiguo 28/01/2004, 10:19
Avatar de maralbust@netsc  
Fecha de Ingreso: julio-2003
Ubicación: Santiago
Mensajes: 242
Antigüedad: 20 años, 8 meses
Puntos: 0
insisto prueba el codigo que te deje mas arriba
__________________
"La imaginacion es el limite"
bee-freaks
  #14 (permalink)  
Antiguo 28/01/2004, 10:29
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 5 meses
Puntos: 11
que servidor de correo estas usando?
como lo tienes configurado?

mira este codigo:

I recently had to spend a lot of time finetuning a function for mail() which would work properly on both Linux and Win32 server. Here's the wrapper function, which should solve all (or most) of the common problems that beginners run into:

function send_mail($myname, $myemail, $contactname, $contactemail, $subject, $message) {
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text/plain; charset=iso-8859-1\n";
$headers .= "X-Priority: 1\n";
$headers .= "X-MSMail-Priority: High\n";
$headers .= "X-Mailer: php\n";
$headers .= "From: \"".$myname."\" <".$myemail.">\n";
return(mail("\"".$contactname."\" <".$contactemail.">", $subject, $message, $headers));
}

This has been tested with both Linux (qmail) and Win32 (ezmts) mail servers, and worked perfectly well. Note that the two headers "X-Priority" and "X-MSMail-Priority", can be left out - but they will help overcome some of the more aggressive spam filtering systems (hotmail, yahoo mail, ...) and ensures your mail is delivered.
__________________
Dedicado a proyectos web, actualmente desarrollando un sistema de diseño de flyers online muy fácil de usar.
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 00:51.