Электронная почта с помощью PHP-скрипта - PullRequest
7 голосов
/ 08 апреля 2011

Привет! Я хочу переслать все электронные письма (которые приходят на мой почтовый ящик) в скрипт php, получить содержимое электронной почты и сохранить его в файле. Так что сделайте так, чтобы я правильно добавил почтовый экспедитор с путем к трубам.

Адрес для пересылки: tickets@ana.stage.centuryware.org

Передача в программу: /home/centuryw/public_html/stage/ana/osticket/upload/api/pipe.php

Я использовал следующий скрипт как 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 */

Но выходного файла не было, и все письма снова отправляются в мой почтовый ящик. Может кто-нибудь помочь мне, пожалуйста?

Ответы [ 5 ]

4 голосов
/ 08 апреля 2011

Убедитесь, что в файле PHP установлен бит исполнения (т.е. chmod +x pipe.php).

3 голосов
/ 28 мая 2013

Я знаю, что этому вопросу 2 года, но, надеюсь, это поможет всем, кто наткнется на него, как я.

У меня была точно такая же проблема, и я потратил целую вечность, пытаясь регистрировать ошибки и т. Д. Затем я заметил, что мой скрипт (и этот) имеет короткие теги PHP (то есть <?), и мой конфигурационный файл PHP имеет этивыключен.Я изменил тег на <?php и скрипт сработал!Очевидно, но легко пропустить ...

3 голосов
/ 22 декабря 2011

попробуйте следующие 2 варианта для проверки:

  • Во-первых, ваш php-файл должен иметь разрешение на выполнение (как минимум из группы владельцев), иначе он не будет работать.

  • Что вы использовали, когда использовали форвардер? Вы также должны упомянуть путь к компилятору php в начале.

Недавно я написал статью, касающуюся процесса детализации передачи содержимого электронной почты в программу php , вам может понравиться посмотреть. Дайте мне знать, если у вас есть еще вопросы. Спасибо.

0 голосов
/ 19 марта 2012

Чанака -

Это не объясняет, почему нет выходного файла, но ...

Разве вы не хотите использовать a+ в вашем fopen() вызове?Аргумент w+ удалит любой контент, который уже существует в вашем выходном файле.

PS: вы пытались выполнить простой тест, который записывает в выходной файл с использованием фиктивного текста (а не ввод из электронной почты)) как содержание?

Джефф Коэн

0 голосов
/ 08 апреля 2011

Если это на самом деле почтовый ящик, почему бы не использовать IMAP (PHP) ? Есть много классов для чтения почты с помощью imap @ phpclasses.org

...