2010-07-30 19 views
8

logré enviar varios correos electrónicos (check here) .Estoy atascado con el envío de correos electrónicos automáticos a través de cron.Cómo enviar correos electrónicos a través de cron job usng PHP mysql

Esto es lo que necesito, mientras que el administrador envía correos electrónicos, guardo el mensaje, los correos electrónicos, la fecha del evento en la base de datos. ahora estoy tratando de establecer un trabajo cron para enviar correos electrónicos a todos estos identificadores de la tabla con el mensaje que tengo como recordatorio. No estoy familiarizado con las secuencias de comandos cron job, ¿alguien puede ayudarme a guiarme de la manera correcta para escribir el script que puedo colocar en la pestaña cron? Estoy planeando enviar dos correos electrónicos, un día exactamente antes del evento y el día del evento. Gracias

Respuesta

9

Simplemente escriba un script PHP normal: haga uno que funcione si se inicia directamente desde el navegador. A continuación, programar ese mismo archivo PHP para funcionar en cron, usando esto como una guía:

http://www.unixgeeks.org/security/newbie/unix/cron-1.html

Básicamente, utilizando los valores al inicio, especifique la programación (minuto, hora, día de la semana, día de mes, etc.). A continuación, configure el usuario con el que se ejecuta, que probablemente sea "apache" o lo que sea que ejecute el daemon de su servidor web. A continuación, establezca el "comando" que se está ejecutando el cron para ser php php_email_script.php (donde "php_email_script.php" es el nombre de su archivo PHP

+0

Solía ​​hacerlo así también, pero en mi experiencia el método wget es mucho más fácil de mantener, ya que solo tiene un punto de entrada. Por supuesto, debe ser consciente de las implicaciones de seguridad, por lo tanto, para mantenerlo seguro, la secuencia de comandos no debe tomar argumentos. – mvds

+0

Hola, gracias, seguí tus instrucciones y lo hice. ¡funciona bien! Voy a publicar la respuesta (consulta simple y función de correo) como respuesta. ¿Debo publicar eso en "responder a tu pregunta"? – Jay

+0

hola, respondí rápidamente, si mi consulta devuelve 3 registros para los cuales la fecha es posterior a la fecha actual, simplemente está enviando el correo para el primero y no para los demás. Intenté while loop pero eso no ayuda. ¿alguna sugerencia? – Jay

5

30 minutos y aún no hay respuesta, aquí hay un par de puertas abiertas:.

  • cron lee sus reglas a partir de todo el sistema /etc/crontab, o por usted crontab personal, que se edita con crontab -e
  • cron tiene un formato en el que dice sobre la que minutos hora/día/mes deben suceder las cosas, google/uso o man crontab para el formato
  • cron tiene el sorprendente efecto secundario de enviar por correo la salida del comando al usuario que posee el crontab

Ahora indica que está utilizando php. La forma más fácil de ejecutar php desde cron es emitir un wget -O - -q http://yoursite.com/yourprocessingscript.php?verysecret=123123 y tener un script de procesamiento apropiado en yoursite.com. (Es posible que desee dejar que el registro de la escritura $ _SERVER [ 'REMOTE_ADDR'])

Así que en resumen, si sólo hay que poner la magia justo en/etc/crontab, como

0 0 * * * jay wget -q -O - "http://yoursite.com/processmidnight.php?secret=yes_very" 

y tienen la secuencia de comandos produce un resultado sensato, recibirá un correo entregado a un usuario local jay, que es posible que desee reenviar.

+0

hola, gracias, su explicación y la respuesta a continuación me ayudaron a ir en la dirección correcta. Publicaré lo que tengo pronto. funciona bien. Gracias. Probé el método Curl pero lo hice llamando al script php en la pestaña cron. – Jay

Cuestiones relacionadas