elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  mail(), error raro al intentar enviar mail !
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: mail(), error raro al intentar enviar mail !  (Leído 4,305 veces)
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
mail(), error raro al intentar enviar mail !
« en: 23 Enero 2010, 16:29 pm »

Hola:

Tengo un pequeno script en PHP que uso para enviar boletines de noticias, avisos, renocaviones, actualiciones, etc, etc... a los usuarios de mi Base de Datos, pero como son muchos y el SMTP me limita a solo 500 mails diarios, y ademas no me permite ejecutar un script PHP por mas de 1 minutos, tuve que modificar mi script para que me envie de 50 en 50, y asi alcanzar el limite de 500.

Pero curiosamente, algunas veces el script simplemente se frena y no me da ningun resultado, ya que cuando los 50 mails se envian correctamente, este me lo indica, pero a veces simplemente se queda sin mostrar mensaje :(.... Cabe mencionar que uso AJAX para el envio de los mails.

Las veces que falla, sucede una de estas dos situaciones:

1- No muestra resultado de satisfaccion y el script simplemente se frena.
2- Me muestra este error: "No recipient addresses found in header".

La funcion que uso para envio de mails.

Pastebind: http://pastebin.com/d369f3f37
Código
  1. <?php
  2. function enviar_correo( $to, $asunto, $modo, $enlace, $adjunto, $from, $log, $link_custom )
  3. {
  4. $boundary= md5(time()); //valor boundary
  5. $htmlalt_boundary= $boundary. "_htmlalt"; //boundary suplementario
  6. $subject=$asunto; //titulo del correo
  7.  
  8. //cabeceras para enviar correo en formato HTML
  9. $headers = "MIME-Version: 1.0\r\n";
  10. $headers .= "Content-Type: multipart/mixed; boundary=\"". $boundary. "\"\r\n"; //datos mixteados
  11. $headers .= "From: ". $from. "\r\n"; //correo del que lo envia
  12.  
  13. //incia cuerpo del mensaje que se visualiza
  14. $cuerpo="--". $boundary. "\r\n";
  15. $cuerpo .= "Content-Type: multipart/alternative; boundary=\"". $htmlalt_boundary. "\"\r\n\r\n"; //contenido alternativo: texto o html
  16. $cuerpo .= "--". $htmlalt_boundary. "\r\n";
  17. $cuerpo .= "Content-Type: text/html; charset=iso-8859-1\r\n";
  18. $cuerpo .= "Content-Transfer-Encoding: 8bits\r\n\r\n";
  19.  
  20. $cuerpo .= "Te escribimos para informarte que se a publicado una nueva noticia en el sitio <b>". $_SERVER['HTTP_HOST']. "</b>, ";
  21. $cuerpo .= "gracias por preferir nuestra comunidad y esperamos que este nuevo <b>servicio informativo</b> te sea de ayuda para enterarte ";
  22. $cuerpo .= "de una forma rapida y facil de las novedades de nuestro sitio web.";
  23.  
  24. $cuerpo .= "\r\n\r\n";
  25. $cuerpo .= "--". $htmlalt_boundary. "--\r\n\r\n"; //fin cuerpo mensaje a mostrar
  26.  
  27. //archivos adjuntos
  28. if( strcmp($adjunto, "0") && strcmp($adjunto, "vacio")  )
  29. {
  30. $archivo= $adjunto;
  31. $buf_type= obtener_extencion_stream_archivo($adjunto); //obtenemos tipo archivo
  32.  
  33. $fp= fopen( "uploads/".$archivo, "r" ); //abrimos archivo
  34. $buf= fread( $fp, filesize("uploads/".$archivo) ); //leemos archivo completamente
  35. fclose($fp); //cerramos apuntador;
  36.  
  37. $cuerpo .= "--". $boundary. "\r\n";
  38. $cuerpo .= "Content-Type: ". $buf_type. "; name=\"". $archivo. "\"\r\n"; //envio directo de datos
  39. $cuerpo .= "Content-Transfer-Encoding: base64\r\n";
  40. $cuerpo .= "Content-Disposition: attachment; filename=\"". $archivo. "\"\r\n\r\n";
  41. $cuerpo .= chunk_split(base64_encode($buf)). "\r\n\r\n";
  42. }
  43. $cuerpo .= "--". $boundary. "--\r\n\r\n";
  44.  
  45. //funcion para enviar correo
  46. set_time_limit(600); //establecemos tiempo de ejecucion scrtip a 10 minutos
  47. if( mail($to, $subject, $cuerpo, $headers) == FALSE )
  48. return 0;
  49. return 1;
  50. }
  51. ?>


« Última modificación: 23 Enero 2010, 16:31 pm por Diabliyo » En línea

Castg!
Wiki

Desconectado Desconectado

Mensajes: 1.191



Ver Perfil WWW
Re: mail(), error raro al intentar enviar mail !
« Respuesta #1 en: 24 Enero 2010, 06:32 am »

mira, no conozco mucho la funcion, pero es medio logico, te dice que el problemas es que no se encontro el "recipient" en el "header", entonces, elproblema sabemops donde esta:

Código
  1. //cabeceras para enviar correo en formato HTML
  2. $headers = "MIME-Version: 1.0\r\n";
  3. $headers .= "Content-Type: multipart/mixed; boundary=\"". $boundary. "\"\r\n"; //datos mixteados
  4. $headers .= "From: ". $from. "\r\n"; //correo del que lo envia

y sabemos cual es, que no hay recipient (parece recipiente, pero como para mandar un mail no se usa recipiente debe ser el quelo recibe, osea "To:").
entonces esto se arregla asi:

Código
  1. //cabeceras para enviar correo en formato HTML
  2. $headers = "MIME-Version: 1.0\r\n";
  3. $headers .= "Content-Type: multipart/mixed; boundary=\"". $boundary. "\"\r\n"; //datos mixteados
  4.        $header .="From: ". $from. "\r\nReply-To: ".$to."\nX-Mailer: PHP/";


entendes cual fue le problema? decime si funco o no...


En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: mail(), error raro al intentar enviar mail !
« Respuesta #2 en: 25 Enero 2010, 05:52 am »

mira, no conozco mucho la funcion, pero es medio logico, te dice que el problemas es que no se encontro el "recipient" en el "header", entonces, elproblema sabemops donde esta:

Código
  1. //cabeceras para enviar correo en formato HTML
  2. $headers = "MIME-Version: 1.0\r\n";
  3. $headers .= "Content-Type: multipart/mixed; boundary=\"". $boundary. "\"\r\n"; //datos mixteados
  4. $headers .= "From: ". $from. "\r\n"; //correo del que lo envia

y sabemos cual es, que no hay recipient (parece recipiente, pero como para mandar un mail no se usa recipiente debe ser el quelo recibe, osea "To:").
entonces esto se arregla asi:

Código
  1. //cabeceras para enviar correo en formato HTML
  2. $headers = "MIME-Version: 1.0\r\n";
  3. $headers .= "Content-Type: multipart/mixed; boundary=\"". $boundary. "\"\r\n"; //datos mixteados
  4.        $header .="From: ". $from. "\r\nReply-To: ".$to."\nX-Mailer: PHP/";


entendes cual fue le problema? decime si funco o no...

Primeramente gracias por responder y tu tiempo....

Bueno, entonces solo falto agregar el Reply-To, pero respecto a X-Mailer: PHP, eso debo ponerlo forzosamente ?, puedo omitir eso ?.

Por otro parte, me sigue la duda de porque anteriormente no recivia error alguno, sino es hasta ahorita, y estamos hablando que tengo mas de 24 meses usando mi sistema de envio de mails para mi web y jamas habia obtenido dicho error, solamente que a veces el script se frenaba (uso AJAX), pero fuera de eso no salia dicho error :(.... Alguna idea ?

Por favor confirmame si es necesario o no tambien agregar lo de X-Mailer: PHP, ya que tengo en mente no agregarlo, pero primero quiero tener tu opinion antes de hacer las pruebas ! :D

Por ultimo... en Reply-To, debo anexar lo que YO TENGO en la variable $to ?... Ya que en dicha variable tengo el correo de la persona a quien le voy a enviar el mail, y pues me imagino que Reply-To se usaria en caso de que el usuario contestara al mail, no ?
« Última modificación: 25 Enero 2010, 06:01 am por Diabliyo » En línea

Castg!
Wiki

Desconectado Desconectado

Mensajes: 1.191



Ver Perfil WWW
Re: mail(), error raro al intentar enviar mail !
« Respuesta #3 en: 25 Enero 2010, 05:59 am »

hagamos algo, porq no lo probas? primero sacale lo del x-mailer, y proba entre dos correos tuyos, lo de replay-to te lo explico asi:
from = desde (correo emisor)
to = a, hacia donde (correo receptor)
En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: mail(), error raro al intentar enviar mail !
« Respuesta #4 en: 25 Enero 2010, 06:04 am »

hagamos algo, porq no lo probas? primero sacale lo del x-mailer, y proba entre dos correos tuyos, lo de replay-to te lo explico asi:
from = desde (correo emisor)
to = a, hacia donde (correo receptor)

Aun sigue la duda men...

Mira, en mis funciones lo manejo asi las variables:

$from --> tengo el mail mio, del emisor vaya.
$to --> tengo el mail del receptor.

Y Reply-To ???.... se supone que deberia poner el $from en esta cabecera, no ?... aparte, no se supone que si NO envio dicha cabecera, aun asi deberia enviarse el mail y si el gestor de correo no detecta una cabecera Reply-To entonces asume que cualquier Replay (contestacion) lo haria al mail que este escrito en la cabecera To:... que no ?
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Enviar mail con HTML ayuda
PHP
extreme69 1 1,451 Último mensaje 11 Mayo 2012, 10:51 am
por extreme69
visualbasic 2010. problema para enviar mail con un bmp adjunto
.NET (C#, VB.NET, ASP)
eze_vin 2 2,464 Último mensaje 4 Febrero 2013, 22:22 pm
por Danyfirex
[Ayuda]Enviar mail con Dll vbSendMail
Programación Visual Basic
Flamer 3 3,527 Último mensaje 15 Octubre 2013, 19:32 pm
por Danyfirex
Enviar mail sin formato mime (plain text)
.NET (C#, VB.NET, ASP)
dep_serg 1 2,042 Último mensaje 6 Febrero 2015, 07:10 am
por __Alvaro 2015__
[Perl] Error al enviar Mail
Scripting
DeMoNcRaZy 9 6,721 Último mensaje 1 Julio 2015, 11:45 am
por explorer
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines