2011-04-08 31 views
6

Hola 'Deseo reenviar todos los correos electrónicos (que vienen a mi bandeja de entrada) a php script y recuperar el contenido del correo electrónico y guardarlo en un archivo. Así que hacer eso fue agregar promotor de correo electrónico con la ruta de la tubería correctamente.Tuberías de correo electrónico con script php

Dirección para remitir: [email protected]

tubería a un programa: /home/centuryw/public_html/stage/ana/osticket/upload/api/pipe.php

he utilizado siguiente secuencia de comandos como pipe.php

#!/usr/bin/php –q 
<? 
/* Read the message from STDIN */ 
$fd = fopen("php://stdin", "r"); 
$email = ""; // This will be the variable holding the data. 
while (!feof($fd)) { 
    $email .= fread($fd, 1024); 
} 
fclose($fd); 
/* Saves the data into a file */ 
$fdw = fopen("mail.txt", "w+"); 
fwrite($fdw, $email); 
fclose($fdw); 
/* Script End */ 

pero no hubo archivo de salida y todos los correos electrónicos se hacen rebotar a mi bandeja de entrada de nuevo. ¿Alguien puede ayudarme por favor?

+0

Nunca pensé pipear. Gracias por el progreso que ha creado en mi mente :) – nerkn

+0

Estoy tratando de enviar correos electrónicos a simple script php y escribir los contenidos del correo electrónico en el archivo. Puedo agregar promotor de correo fácilmente usando Cpanel. Esta no es una idea tonta. – Chanaka

Respuesta

-1

Si esto es en realidad un buzón de correo electrónico, ¿por qué no utilizar IMAP (PHP)? Hay muchas clases para leer el correo con imap @ phpclasses.org

+0

Esta es mi dirección de correo web y quiero reenviar todos los correos electrónicos a la secuencia de comandos pipe.php que están llegando a mi dirección de correo web.Me enviaron un reenviador de correo electrónico usando Cpanel. – Chanaka

+0

Una dirección de webmail es una dirección de correo electrónico. A continuación, cree un script que lea los correos electrónicos en una base de datos. Establece un cronjob en ese script. –

+4

El correo de sondeo es mucho menos eficiente que enrutarlo al script – symcbean

4

Asegúrese de que el archivo PHP tenga el bit de ejecución establecido (es decir, chmod +x pipe.php).

+0

, sí. Establecí el permiso de archivo como 755 .... :(. No hubo errores con el script. Pero tampoco había ningún archivo de salida (mail.txt) – Chanaka

+0

¿Tiene permisos para escribir en ese archivo? –

3

tratar las siguientes 2 opciones a comprobar:

  • En primer lugar, su archivo PHP debe necesitar tener permiso de ejecución (del grupo propietario al menos), de lo contrario no funcionará.

  • ¿Qué usaste cuando usabas el autocargador? Debe mencionar la ruta del compilador de php al principio también.

Recientemente he escrito un artículo sobre el proceso de detalle completo de piping email content to php program, usted puede tener gusto de echar un vistazo. Avísame si tienes más preguntas. Gracias.

0

Chanaka -

Esto no se refiere a eso que no hay archivo de salida, pero ...

¿No quieres usar a+ en su llamada fopen()? El argumento w+ eliminará cualquier contenido que ya exista en su archivo de salida.

PD: ¿Ha intentado hacer una prueba simple que escribe en el archivo de salida usando texto ficticio (no la entrada de un correo electrónico) como el contenido?

Jeff Cohan

3

Sé que esta pregunta es de 2 años de edad, pero es de esperar que esto ayudará a cualquier persona que se topa con ella como lo hice.

Tuve exactamente el mismo problema y pasé muchas eras tratando de registrar errores, etc. Luego noté que mi script (y este) tenía etiquetas cortas de PHP (es decir, <?) y mi archivo de configuración PHP los había desactivado. Cambié la etiqueta a <?php y la secuencia de comandos funcionó! Obvio pero fácil de extrañar ...

+0

Parece que el OP se está ejecutando PHP en el cuadro de Linux, tu punto no es vald – meda

+1

@meda esto es una configuración en el archivo de configuración de PHP. No tiene nada que ver con el sistema operativo. – viniciusmunich

Cuestiones relacionadas