Foros del Web » Programando para Internet » PHP »

Problema con mail()

Estas en el tema de Problema con mail() en el foro de PHP en Foros del Web. Desde hace unos días no he podido mandar email o recibir los email de notificacion de suscripción que funcionaban correctamente: Este es el script de ...
  #1 (permalink)  
Antiguo 26/03/2010, 11:57
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 3 meses
Puntos: 306
Problema con mail()

Desde hace unos días no he podido mandar email o recibir los email de notificacion de suscripción que funcionaban correctamente:

Este es el script de la notificacion de suscripcion
Código PHP:
Ver original
  1. $destinatario = $direccionmail;
  2.        $asunto = "Confirmación de Suscripción: ".$suscriptor."-".$especialidad;
  3.        //$cuerpo = "";
  4.        
  5.        //para el envío en formato HTML
  6.        $headers = "MIME-Version: 1.0\r\n";
  7.        $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
  8.        
  9.        //dirección del remitente
  10.        $headers .= "From: <[email protected]>\r\n";
  11.        
  12.         //direcciones que recibirán copia
  13.        //$headers .= "Cc: [email protected]\r\n";
  14.        
  15.        //direcciones que recibirán copia oculta si es mas de una separar con ,
  16.        $headers .= "Bcc: [email protected],[email protected]\r\n";
  17.      
  18.        mail($destinatario,$asunto,$cuerpo,$headers);

El hosting que uso es : incrediplan.com
Si necesitan algo más, por favor, me dicen.
Ya no sé por donde mirar, según los del hosting no han cambiado nada.
Espero, no la solución, si no que me orienten hacia donde debo mirar
Gracias
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--
  #2 (permalink)  
Antiguo 26/03/2010, 12:10
Avatar de dargor  
Fecha de Ingreso: octubre-2009
Mensajes: 134
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Problema con mail()

aqui he escrito el codigo para un mail() que siempre me ha funcionado

http://www.forosdelweb.com/f18/error-enviar-formulario-correo-783774/

si no es eso, deberias consultar con el hosting cuanto es lo permitido para enviar correos por hora, porque la desventaja de mail() es que te lo pueden clasificar como spam.

o sino puedes utilizar phpmailer que tambien viene de maravilla.
  #3 (permalink)  
Antiguo 26/03/2010, 12:11
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Problema con mail()

Pásate a PhpMailer, no es la panacea pero va funcionando.

Saludos

Edito-> perdona dargor, estaba editando no vi tu resp.
__________________
Tu álbum de cromos online!!
  #4 (permalink)  
Antiguo 26/03/2010, 12:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con mail()

pues la sintaxis del código es correcta....

ahora, la pregunta es, ¿como y donde se ejecuta este script??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 26/03/2010, 12:31
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 3 meses
Puntos: 306
Respuesta: Problema con mail()

Código HTML:
Ver original
  1. <?
  2. include ("admin/conpyr.inc");
  3. $keywords ="lista de correo, informacion, facultad, email, suscribite";
  4. $title= "PyR: SUSCRIBITE";
  5.  
  6.  
  7. function mysql_escape($cadena) {
  8.    if(get_magic_quotes_gpc() != 0) {
  9.        $cadena = stripslashes($cadena);
  10.    }
  11.    return mysql_real_escape_string($cadena);
  12. }  
  13.  
  14. function ValidaMail($pMail) {
  15.  if(ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@+([_a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]{2,200}\.[a-zA-Z]{2,6}$", $pMail ) ) {
  16.    return true;
  17.  }
  18.  else {
  19.    return false;
  20.  }
  21. }
  22.  
  23. if (isset($_POST['Enviado'])){
  24.    if ($Enviado == True){
  25.        
  26.         $suscriptor= mysql_escape($_POST[Nombre]);
  27.         $direccionmail= mysql_escape($_POST[Direccion]);
  28.         $especialidad= mysql_escape($_POST[selCarrera]);
  29.         $Cate= mysql_escape($_POST[categoria]);
  30.         if($Cate == 1){$codenvio = 0; $tipoopcion ="Todas las novedades";}
  31.         if($Cate == 3){$codenvio = 6; $tipoopcion ="Novedades Ingreso";}
  32.         if($Cate == 2){$tipoopcion ="Solo de tú especialidad";
  33.         if($especialidad == "ISI"){$codenvio = 1;}
  34.         if($especialidad == "IQ"){$codenvio = 2;}
  35.         if($especialidad == "IM"){$codenvio = 3;}
  36.         if($especialidad == "IE"){$codenvio = 4;}
  37.         if($especialidad == "IC"){$codenvio = 5;}
  38.        
  39.         }
  40.        
  41.         $fechasus= date("Y-m-d");
  42.        
  43.        
  44.        
  45.        
  46.        if(ValidaMail($direccionmail)){
  47.            
  48.         //me fijo si ya existen la direccion en la base
  49.        
  50.          $link = mysql_connect($host_db , $usuario_db ,$pass_db );
  51.             mysql_select_db($puebloyreforma_db,$link);
  52.        
  53.        $duplica= mysql_query("SELECT COUNT(email) FROM lista3 WHERE email= '".$direccionmail."' ",$link)
  54.        or die( "Error en Query: $sql, error: " . mysql_error() );
  55.        
  56.         $control= mysql_result($duplica,0);
  57.         $control2= $control[0];
  58.        
  59.         if( $control2 > 0){$Mensaje1="<p class=\"anuncio\"><span class=\"atexto\">YA ESTAS SUSCRIPTO <br/>Esta dirección:".$direccionmail." ya Existe en nuestra Lista de Correo!!!<br/> Si has tenido problemas y no te llegan los mail, por favor envianos un correo a la dirección que está al pie del formulario. Gracias</span></p>";}
  60.        
  61.         //si no esta repetida continuo con la suscripcion
  62.         else{
  63.        
  64.         // envio un email como confirmacion de suscripcion y con copia oculta para verificación y filtro de NO DESEADOS
  65.      
  66.      //armo el html para el mail a enviar
  67.         $cuerpo='
  68.   <title>LISTA DE CORREOS PYR</title>
  69.  
  70. </head>
  71. <body style="margin:0; padding: 0; ">
  72. ...
  73. </body>
  74. </html>
  75. ';
  76.  
  77. //fin del html
  78.  
  79.      
  80.      
  81.       $destinatario = $direccionmail;
  82.        $asunto = "Confirmación de Suscripción: ".$suscriptor."-".$especialidad;
  83.        //$cuerpo = "";
  84.        
  85.        //para el envío en formato HTML
  86.        $headers = "MIME-Version: 1.0\r\n";
  87.        $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
  88.        
  89.        //dirección del remitente
  90.        $headers .= "From: <[email protected]>\r\n";
  91.        
  92.            
  93.        //direcciones que recibirán copia
  94.        //$headers .= "Cc: [email protected]\r\n";
  95.        
  96.        //direcciones que recibirán copia oculta si es mas de una separar con ,
  97.        $headers .= "Bcc: [email protected],[email protected]\r\n";
  98.      
  99.        mail($destinatario,$asunto,$cuerpo,$headers);
  100.  
  101.  
  102.  
  103.  
  104.        // guardo en la base los datos del nuevo suscripto
  105.        $result = mysql_query("INSERT INTO lista3 (......) VALUES ('"........"')", $link) or die( "Error en Query: $sql, error: " . mysql_error() );
  106.    
  107.    
  108.    
  109.    
  110.        header("Location: suscribite4.php?nombre=$suscriptor&correo=$direccionmail&carrera=$especialidad");
  111.            }
  112.            }
  113.            
  114.    
  115.         else{
  116.            $Mensaje2="<div class=\"anuncio\"><p class=\"atexto\" >¡¡¡ERROR DIRECCION NO VALIDA!!!</p></div>";
  117.         }
  118.     }
  119. }
  120.  
  121.  
  122.  
  123. include('./encabeza.htm'); ?>
  124. <!-- acá empieza Suscripciones.php -->
  125.  
  126.  
  127. <!-- Acá abro el div que va a contener el contenido-->
  128.  
  129.  
  130. <div id="contenido">
  131.  
  132.   <!-- columna izquierda-->
  133.   <div id="cajaizq">
  134.     bla bla bla  
  135.    
  136.    
  137.    
  138.   <!-- cierro columna izquierda-->        
  139.   </div>
  140.   <!--Fin columna izquierda-->
  141.  
  142.  
  143.   <!-- columna central -->
  144.   <div id="cajacentral">
  145.    
  146.    
  147.   <!-- aca abro el div todas las novedades -->
  148.   <div id="todasnovedades">
  149.    
  150.            
  151.     <div id="header4">
  152.       <h4>PARA ESTAR SIEMPRE INFORMADO: SUSCRIBITE</h4>
  153.       <p> <? echo $Mensaje;?> </p>
  154.       </div>
  155.    
  156.     <!-- abro el div del primer proyecto-->
  157.   <div class="novedad">
  158.  
  159.    
  160.    
  161.    
  162.    
  163.       <h2 class="act">NUEVA LISTA DE CORREO</h2>
  164.      
  165.        <p class="pienovedad"></p>
  166.       <form action= "suscribite.php" method="POST" enctype="multipart/form-data" name="form1" class="formulario">
  167.         <? echo $Mensaje1.$Mensaje2;   ?>
  168.        
  169.        <span id="suscripto">
  170.        <label>Nombre y Apellido
  171.          <input type="text" name="Nombre" id="nombre" size="35"/>
  172.          * </label>
  173.        <br />
  174.        <br />
  175.        <span class="textfieldRequiredMsg">Coloca tu Nombre</span> <span class="textfieldMinCharsMsg">No se cumple el mínimo de caracteres requerido.</span><span class="textfieldInvalidFormatMsg">Formato no válido.</span></span>
  176.        
  177.      <br /><br />
  178.        <span id="e-mail">
  179.        <label>Email
  180.          <input type="text" name="Direccion" id="email" size="50"/>*
  181.        </label>
  182.        <span class="textfieldRequiredMsg">Escribe tu email.</span><span class="textfieldInvalidFormatMsg">Formato no válido.</span></span>
  183.        
  184.        
  185.      <br /><br />
  186.       <span id="spryselect1">
  187.       <label>Carrera:
  188.         <select name="selCarrera" >
  189.           <option value="">Elige tu carrera</option>
  190.           <option value="IC">Ing. Civil</option>
  191.           <option value="IE">Ing. El&eacute;ctrica</option>
  192.           <option value="IM">Ing. Mec&aacute;nica</option>
  193.           <option value="IQ">Ing. Qu&iacute;mica</option>
  194.           <option value="ISI">Ing. en Sistemas</option>
  195.         </select>
  196.       </label>
  197.       <span class="selectRequiredMsg">Selecciona tu carrera.</span></span>
  198.         <br/><br/>
  199.         <span id="spryradio1">
  200.         <label>Categoría de Novedades:<br/><br/>
  201.           <input type="radio" name="categoria" value="1" id="novaenviar_0" checked="checked"/>
  202.           TODAS</label>
  203.          |
  204.         <label>
  205.           <input type="radio" name="categoria" value="2" id="novaenviar_1" />
  206.           Sólo de mi Carrera</label>
  207.             |
  208.           <label>
  209.           <input type="radio" name="categoria" value="3" id="novaenviar_2" />
  210.           CURSO de INGRESO</label>
  211.         <br />
  212.         <span class="radioRequiredMsg">Realice una selección.</span></span><br/><br/>
  213.         <input type="submit" name="Submit" value=" - Suscribirme - ">
  214.        
  215.      
  216.        
  217.         <input type="hidden" name="Enviado" value="true">
  218.         <br/><br/>
  219.        
  220.        
  221.       </form>
  222.      
  223.        <div class="textonovedad">
  224.      
  225.      <p class="pienovedad"></p>
  226.       <p>
  227.         "[email protected]" es una lista de distribución de mails que te permite
  228.         estar informado constantemente sobre todo lo que pasa en la Facultad Regional Rosario
  229.         de la UTN y las distintas carreras que en ella se cursan, recibiras aproximadamente
  230.         uno o dos mails por semana y ademas podras desuscribirte cuando lo desees. </p><br /><br/>
  231.       <p>Para suscribirte sólo tenés que completar el formulario con tu Nombre y Dirección de correo, además podés elegir que te enviemos sólo las noticias referentes a tu especialidad junto con las novedades generales (paros, actividades generales, etc) o TODAS las noticias (incluidas aquellas que no son de tu especialidad).<br/>
  232.       En caso de no elegir Categoría, por defecto te llegarán TODAS las novedades.
  233.      
  234.         </p>
  235.    <br/>  
  236.    <br/>
  237.       <p class="pienovedad">Por cualquier duda contactate a <a href="mailto:[email protected]">[email protected]</a></p>
  238.      
  239.      
  240.   </div>
  241.   </div>
  242.   </div>
  243.    
  244.    
  245.    
  246.    
  247.  </div> <!-- cierro columna central-->
  248.  
  249.  
  250.  
  251.   </div><!-- FIN DE CONTENIDO CENTRAL DE LA PAGINA-->          
  252.  
  253.  
  254.    
  255.   <!-- PIE DE PAGINA -->
  256.  
  257.   bla bla bla
  258. </body>
  259. </html>


El donde y como, (creo) es eso, o más específicamente www.puebloyreforma.org.ar/suscribite.php
En realidad esto funcionaba bien, por eso no entiendo el porque no funciona ahora.
Es decir, me guarda la info en la base de datos, pero no me envia el email de confirmación.

Tal vez el problema este en otro lado, pensando un poco, por ejemplo en el envio del boletín que me este trabando la salida de otros mail, no sé, la verdad ya no sé que pensar.

Muchas gracias por sus respuestas, y sí estoy desde hace unos dias probando con el phpmailer, pero aún no lo he implementado, solo en etapa de aprendizaje prueba-error, ¿será ese el problema?
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--
  #6 (permalink)  
Antiguo 26/03/2010, 13:13
Avatar de dargor  
Fecha de Ingreso: octubre-2009
Mensajes: 134
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Problema con mail()

un boletín usando mail() puede ser un problema, porque lo mas seguro es que el hosting (no se si el pagado, pero en los gratuitos así pasa) te puedan clasificar como spammer por enviar correos masivos y te bloquearían las salidas, e incluso unos hasta te la clausararian sin preguntar.
  #7 (permalink)  
Antiguo 27/03/2010, 21:10
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 3 meses
Puntos: 306
Respuesta: Problema con mail()

Bueno, en cuanto al boletin hace mucho que lo enviamos y nunca tuvimos problemas.
El último que envié tardo como un día en llegar, y supongo que habrá sido producto de algunos cambios que hice, aunque he estado mirando y no veo la gran diferencia.
Es más reduje la cantidad de envios ya que estoy en actualización de la lista de correo, y pase de 1800 a menos de 1000.
Aún hoy sigo sin poder enviar, mejor dicho, recibir mail, porque el script no me da ningún error de conexión o falla, simplemente no llegan.
Creo que es algún tipo de error con la funcion mail() o han bloqueado dicha función, si es que es posible eso, porque como dije antes y que es el código que puse, ni siquiera recibo la confirmación de suscripción, siendo que ese formulario no lo toque para nada.

Otra posibilidad que estoy estudiando, es que alguna de las tandas de email haya salido con remitente vacio, ¿eso podría provocar algun tipo de problema en mail()?

Bueno, espero que alguien me de alguna pista para entender que pasó, porque no quiero quedarme con que "fallo y paso a otra cosa", quiero descubrir la causa del problema.


Bien, más allá de esto, comencé a trabajar con phpmailer y me ha resultado bastante agradable y relativamente sencillo de utilizar (después de varios días de googlear y estudiar ejemplos y resolución de problemas, etc)
Ahora un par de preguntas:

¿Cual es el mejor metodo de envio: SMTP, mail(). send()? y ¿cual es la diferencia entre ellos?

¿como puedo evitar que se vea en el caso de smtp la direccion desde la que se envia, y me muestre solo la direccion del "from"? Las otras aun no las he probado asi que no se como llegan, aunque supongo que la mail() es igual a lo que venia haciendo.

y por último (por ahora)
Tengo varias categorias de envio, puedo hacer esto:
Código PHP:
Ver original
  1. //<preparo variables comunes para el envio
  2. $asuntos; //etc.
  3. //luego envio segun categoria
  4. if (isi=1){ obtengo direcciones de la base y envio mail categoria 1}
  5. if (ic=2){ obtengo direcciones de la base y envio mail categoria 2}
  6. if (iq=3){ obtengo direcciones de la base y envio mail categoria 3}
O debo separarlos en archivos distintos para que no tenga problemas el envio, porque puede ser que elija mas de una categoria por ejemplo enviar a 1 y a 2.
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--

Etiquetas: mail
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 21:11.