Обработка входящей электронной почты с помощью PHP Script - PullRequest
3 голосов
/ 19 октября 2010

Итак, я пытаюсь выяснить, как отправить электронное письмо на адрес, например, нечто@whever.com, и вместо того, чтобы отправлять туда электронное письмо, оно вместо этого будет отправлено или перенаправлено в сценарий, который я создаю. прочитать содержимое письма и сохранить его в базе данных. Любые предложения о том, как сделать это на PHP?

Спасибо!

Ответы [ 2 ]

8 голосов
/ 19 октября 2010

Вот код, который вы можете использовать, чтобы начать работу:

// set user to check
$strUser     = "username";
$strPassword = "password";

// open
$hMail = imap_open ("{mail.yourdomain.com:143/notls}INBOX", "$strUser", "$strPassword");

// get headers
$aHeaders = imap_headers( $hMail );

// get message count
$objMail = imap_mailboxmsginfo( $hMail );

// process messages
for( $idxMsg = 1; $idxMsg <= $objMail->Nmsgs; $idxMsg++  )
{
    // get header info
    $objHeader = imap_headerinfo( $hMail, $idxMsg );

    // get from object array
    $aFrom = $objHeader->from;

    // process headers
    for( $idx = 0; $idx < count($aFrom); $idx++ )
    {
        // get object
        $objData = $aFrom[ $idx ];

        // get email from
        $strEmailFrom = $objData->mailbox . "@" . $objData->host;

        // do some stuff here
    }

    // delete message
    imap_delete( $hMail, $idxMsg );
}

// expunge deleted messages
imap_expunge( $hMail );

// close
imap_close( $hMail );
2 голосов
/ 19 октября 2010

Два варианта:

1) Если у вас есть доступ к оболочке на сервере электронной почты получателя, вы можете настроить правило для запуска сценария (например, через procmail или подобное) при получении нового сообщения.

2) Вы можете разрешить отправку электронной почты в почтовый ящик в обычном режиме, а затем написать свой PHP-скрипт для доступа к почтовому ящику через IMAP, получить новые сообщения, обработать их, а затем удалить их. А затем запускайте вещь через cron каждые несколько минут.

...