You are here

public function MailhandlerPhpImapRetrieve::retrieve_message in Mailhandler 7.2

Same name and namespace in other branches
  1. 6.2 modules/mailhandler_php_imap/plugins/mailhandler/retrieve/MailhandlerPhpImapRetrieve.class.php \MailhandlerPhpImapRetrieve::retrieve_message()

Retrieve individual messages from an IMAP result.

Parameters

object $result: IMAP stream.

object $mailbox: Mailbox to retrieve from.

int $msg_number: IMAP message number.

string $filter_name: Mailhandler Filter plugin to use.

Return value

array|false Retrieved message, or FALSE if message cannot / should not be retrieved.

1 call to MailhandlerPhpImapRetrieve::retrieve_message()
MailhandlerPhpImapRetrieve::retrieve in modules/mailhandler_php_imap/plugins/mailhandler/retrieve/MailhandlerPhpImapRetrieve.class.php
Connect to mailbox and run message retrieval.

File

modules/mailhandler_php_imap/plugins/mailhandler/retrieve/MailhandlerPhpImapRetrieve.class.php, line 366
Definition of MailhandlerPhpImapRetrieve class.

Class

MailhandlerPhpImapRetrieve
Retrieve messages using PHP IMAP library.

Code

public function retrieve_message($result, $mailbox, $msg_number, $filter_name) {
  extract($mailbox->settings);
  $header = imap_headerinfo($result, $msg_number);

  // Check to see if we should retrieve this message at all.
  if ($filter = mailhandler_plugin_load_class('mailhandler', $filter_name, 'filters', 'handler')) {
    if (!$filter
      ->fetch($header)) {
      return FALSE;
    }
  }

  // Initialize the subject in case it's missing.
  if (!isset($header->subject)) {
    $header->subject = '';
  }

  // Parse MIME parts.
  $parts = $this
    ->get_parts($result, $msg_number);
  $message = FALSE;

  // Is this an empty message with no body and no mimeparts?
  if (!empty($parts)) {
    $imap_uid = $type == 'pop3' ? $this
      ->fetch_uid($mailbox, $msg_number) : imap_uid($result, $msg_number);
    $message = compact('header', 'imap_uid');
    $message['body_text'] = $parts['text_body'] ? $parts['text_body'] : $parts['html_body'];
    $message['body_html'] = $parts['html_body'] ? $parts['html_body'] : $parts['text_body'];
    $message['mimeparts'] = $parts['attachments'];
  }
  return $message;
}