Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Error con la función mail() desde cron job

Estas en el tema de Error con la función mail() desde cron job en el foro de PHP en Foros del Web. Hola compañeros! Tengo un problemilla, resulta que tengo un código PHP que quiero que se ejecute con una tarea programada (Cron job), resulta que cuando ...
  #1 (permalink)  
Antiguo 28/10/2014, 07:00
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Exclamación Error con la función mail() desde cron job

Hola compañeros!
Tengo un problemilla, resulta que tengo un código PHP que quiero que se ejecute con una tarea programada (Cron job), resulta que cuando ejecuto el script desde el navegador, funciona perfectamente, pero cuando lo hace cron job desde el servidor, no se que pasa que tiene un error en una parte del código.

Hace todo lo que le demando menos enviar un email al final del código.
Este es el código:
Código PHP:
$email_admin='[email protected]';
$asunto_admin='mi asunto';
$mensaje_admin='mi mensaje';
$cabeceras_admin  'MIME-Version: 1.0'."\r\n"
$cabeceras_admin .= 'Content-type: text/html; charset=UTF-8'."\r\n";         
$cabeceras_admin .= 'From: admin <[email protected]>'."\r\n";
 
mail($email_admin$asunto_admin$mensaje_admin$cabeceras_admin); 
Otra cosita, en la función mail() ¿no existe algo que me indique de que error se trata? así como el or die (mysql_error()) de una consulta mysl.

Agradecería que me guiaseis un poco!
Un saludo muy grande y gracias por tomaros un tiempo.
  #2 (permalink)  
Antiguo 28/10/2014, 11:39
 
Fecha de Ingreso: julio-2013
Mensajes: 87
Antigüedad: 11 años, 4 meses
Puntos: 9
Respuesta: Error con la función mail() desde cron job

El error te lo va a mostrar en tu error.log que tengas definido. Si nos lo envías igual te podemos ayudar más fácilmente.
  #3 (permalink)  
Antiguo 28/10/2014, 12:40
 
Fecha de Ingreso: junio-2011
Ubicación: uruguay
Mensajes: 42
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Error con la función mail() desde cron job

Te recomiendo usar una librería para poder enviar email desde un cronjob.

Por ejemplo si tienes este cron:

Código PHP:
$sendto "Webmaster <user@mail>";
$sendfrom "Respaldo Automatico <user2@mail2>";
echo 
"Cuerpo del mensaje\n\n";
$sendsubject "Asunto del mensaje";
$bodyofemail "Body del mensaje";

// si quieres enviar un archivo, esta es la variable

$backupzip33'/ruta_del_archivo.zip';

    include(
'Mail.php');
    include(
'Mail/mime.php');

    
$message = new Mail_mime();
    
$text "$bodyofemail";
    
$message->setTXTBody($text);
    
$message->AddAttachment($backupzip33);
        
$body $message->get();
        
$extraheaders = array("From"=>"$sendfrom""Subject"=>"$sendsubject");
        
$headers $message->headers($extraheaders);
    
$mail Mail::factory("mail");
    
$mail->send("$sendto"$headers$body); 

No olvides incluir la librería...
https://mega.co.nz/#!PR4UULCA!2GhgUUfJ8fM_JZRAfWXhYnbSpdRL7ii1iSLGTd6 yy1g
  #4 (permalink)  
Antiguo 28/10/2014, 14:14
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: Error con la función mail() desde cron job

Mas bien yo usaria phpMailer.

podes saber si se envio o no:

if(mail($email_admin, $asunto_admin, $mensaje_admin, $cabeceras_admin) )
echo 'OK';
else
echo 'no se envió';
  #5 (permalink)  
Antiguo 28/10/2014, 14:53
 
Fecha de Ingreso: noviembre-2009
Mensajes: 205
Antigüedad: 15 años
Puntos: 15
Respuesta: Error con la función mail() desde cron job

Probablemente estas invocando el script php en forma incorrecta desde el crontab, es uno de los errores más comunes, el otro es la falta de permisos.
Puedes pegar la linea completa?
  #6 (permalink)  
Antiguo 29/10/2014, 03:22
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error con la función mail() desde cron job

Hola! Muchas gracias por las respuestas!!
  • ccliment: Entro en mi error log y no muestra ninguno cuando se ejecuta el script (Si otros que ya he solucionado )
  • gmyb y Patriarka: Os lo agradezco pero no quisiese complicarme mucho con librerias, si no quedase otra lo haré, pero de momento me gustaría dejar aparcada esa opción. Gracias!
  • Patriarka: Me devuelve "No se envió" y no se porque!!
  • RoyKeane: Creo que lo invoco bien ya que se ejecuta todo el script y solo falta el último paso que seria enviarme un email verificando que se ha ejecutado. Lo que no he probado es aplicarle los permisos necesarios, pero desconozco como hacerlo, si me guías un poquito... Gracias!

Muchas gracias!!!!
  #7 (permalink)  
Antiguo 29/10/2014, 12:46
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: Error con la función mail() desde cron job

Patriarka: Me devuelve "No se envió" y no se porque!!

por que la funcion email no funciona al %100, por eso debes usar phpMailer o alguno parecido para enviar email
si realmente necesitas usar la funcion mail de php debes tener un servidor especializado en envio de emails que no es poca cosa...
  #8 (permalink)  
Antiguo 29/10/2014, 12:51
 
Fecha de Ingreso: noviembre-2009
Mensajes: 205
Antigüedad: 15 años
Puntos: 15
Respuesta: Error con la función mail() desde cron job

Cita:
Iniciado por sidneyendis Ver Mensaje
si me guías un poquito... Gracias!
Si posteas tu cron job con gusto
  #9 (permalink)  
Antiguo 29/10/2014, 13:22
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error con la función mail() desde cron job

Cita:
Iniciado por Patriarka Ver Mensaje
Patriarka: Me devuelve "No se envió" y no se porque!!

por que la funcion email no funciona al %100, por eso debes usar phpMailer o alguno parecido para enviar email
si realmente necesitas usar la funcion mail de php debes tener un servidor especializado en envio de emails que no es poca cosa...
Veo que no me quedará otra que usar librerías... al final ahorraré tiempo... Pero me da tanta rabia que funcione bien si lo ejecuto desde el navegador y que desde el servidor lo único que no funcione es el envío de emails.... ains!!
Gracias nuevamente por tu respuesta!
  #10 (permalink)  
Antiguo 29/10/2014, 13:25
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error con la función mail() desde cron job

Cita:
Iniciado por RoyKeane Ver Mensaje
Si posteas tu cron job con gusto
No es que no quiera postearlo, pero utilizo CPanel y no tengo acceso (Que yo sepa) al archivo cron job.... Puedo hacer una captura de pantalla... pero creo que no e slo que me pides....
  #11 (permalink)  
Antiguo 29/10/2014, 13:38
 
Fecha de Ingreso: noviembre-2009
Mensajes: 205
Antigüedad: 15 años
Puntos: 15
Respuesta: Error con la función mail() desde cron job

Da igual como mientras se vea la sintaxis.
  #12 (permalink)  
Antiguo 29/10/2014, 14:08
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error con la función mail() desde cron job

Cita:
Iniciado por RoyKeane Ver Mensaje
Da igual como mientras se vea la sintaxis.
Te refieres a esto? :
Código Apache:
Ver original
  1. 12  12  *   *   1-5 /usr/bin/php /home/00000000/public_html/miweb.com/ejecucion/tarea_act.php

Los ceros son para ocultar mi número de usuario.
Gracias nuevamente por tu tiempo! ;)
  #13 (permalink)  
Antiguo 29/10/2014, 14:34
 
Fecha de Ingreso: noviembre-2009
Mensajes: 205
Antigüedad: 15 años
Puntos: 15
Respuesta: Error con la función mail() desde cron job

A ver, algunos hechos que se me vienen a la mente...

- El último parámetro antes de invocar la instrucción a ejecutar es el tiempo de ejecución, hay podrías poner un asterisco por las dudas.

- Cpanel no logea errores de cron a nivel usuario pero igualmente de haberlos debería redireccionarlos a tu email, puedes verificar si tienen notificaciones allí.

- La ruta al binario de PHP podría no ser válida (poco probable pero no imposible), para eliminar esta posibilidad puedes levantar el script con wget

Cita:
Y con respecto a los permisos esto es algo complejo porque Cpanel utiliza suPHP y no solo tienes que cuidarte de tener permisos suficientes sino tambien de que no esten por encima de lo que el sistema permite. Tienes que fijarte si puedes accederlo directamente desde el navegador.

Eso es lo que se me ocurre de momento.

EDIT: otro punto a considerar es que estando en un entorno de hosting compartido seguramente tienes limitado el nro de correos que puedes enviar por hora, una vez que llegues al tope el resto se descarta.
La cantidad de procesos que tu usuario puede correr simultaneamente también debería estar limitada.

Última edición por RoyKeane; 29/10/2014 a las 14:40
  #14 (permalink)  
Antiguo 29/10/2014, 18:12
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error con la función mail() desde cron job

Cita:
Iniciado por RoyKeane Ver Mensaje
- La ruta al binario de PHP podría no ser válida (poco probable pero no imposible), para eliminar esta posibilidad puedes levantar el script con wget
Buenisimo RoyKeane!!!
Me has salvado tío! te lo agradezco!

Por cierto, podrías explicarme ¿porque con la ruta al binario de PHP no funcionaba y con wget si?
Un abrazo muy grande!
  #15 (permalink)  
Antiguo 29/10/2014, 18:20
 
Fecha de Ingreso: noviembre-2009
Mensajes: 205
Antigüedad: 15 años
Puntos: 15
Respuesta: Error con la función mail() desde cron job

Cita:
Iniciado por sidneyendis Ver Mensaje
Buenisimo RoyKeane!!!
Me has salvado tío! te lo agradezco!
Por nada.


Cita:
Iniciado por sidneyendis Ver Mensaje
Por cierto, podrías explicarme ¿porque con la ruta al binario de PHP no funcionaba
Una posibilidad es que este instalado en otra ubicación, prueba /usr/local/bin/php
O confirma el path mediante un phpinfo()
  #16 (permalink)  
Antiguo 30/10/2014, 02:52
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error con la función mail() desde cron job

Cita:
Iniciado por RoyKeane Ver Mensaje
O confirma el path mediante un phpinfo()
Justo lo que necesitaba!
Muchas gracias nuevamente!
Un saludo muy grande!

Etiquetas: cron, funcion, job, 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 00:23.