phpimap

PHP5-IMAP request returns no body


I am using the Ipipi SMS email service to send control commands to a PHP script.

I can send email messages to my mailbox, then read and display them using PHP-IMAP commands as in this code segment:

$overview = imap_fetch_overview($inbox,$email_number,0);
    $message = imap_fetchbody($inbox,$email_number,2);
    echo $message;

If I send an SMS message to the mailbox imap_fetchbody, it returns empty.

However, if I then read the mailbox with a email client the message is there. I do not think it is an Ipipi issue.

If I do a var_dump($message) I get string(0) "".


Solution

  • When you issue

    $message = imap_fetchbody($inbox,$email_number,2);
    

    you're asking for the content of part 2 of the message. (That's what the third argument to imap_fetchbody means.)

    string imap_fetchbody ( resource $imap_stream , int $msg_number ,
                            string $section [, int $options = 0 ] )
    

    It's hard to know without being able to see a sample message from the SMS gateway, but I'd guess that your message isn't a multipart and thus it doesn't have a part 2. What happens if you substitute a 1 for the 2 when fetching this particular message?

    (In general, you'll want to look at the message structure before deciding which body part to fetch. You can use imap_fetchstructure for this.)