Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use IMAP in PHP to fetch mail body content?

Tags:

php

imap

I can't fetch email body content.

This is my code

<?php
/* connect to server */
$hostname = '{myserver/pop3/novalidate-cert}INBOX';
$username = 'username';
$password = 'password';

/* try to connect */
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Tiriyo: ' . imap_last_error());
//echo $inbox;
/* grab emails */
$emails = imap_search($inbox,'ALL');


/* if emails are returned, cycle through each... */
if($emails) {

  /* begin output var */
  $output = '';

  /* put the newest emails on top */
  rsort($emails);

  /* for every email... */
  foreach($emails as $email_number) {
    //$email_number=$emails[0];
//print_r($emails);
    /* get information specific to this email */
    $overview = imap_fetch_overview($inbox,$email_number,0);
    $message = imap_fetchbody($inbox,$email_number,2);

    /* output the email header information */
    $output.= '<div class="toggler '.($overview[0]->seen ? 'read' : 'unread').'">';
    $output.= '<span class="subject">'.$overview[0]->subject.'</span> ';
    $output.= '<span class="from">'.$overview[0]->from.'</span>';
    $output.= '<span class="date">on '.$overview[0]->date.'</span>';
    $output.= '</div>';

    /* output the email body */
    $output.= '<div class="body">'.$message.'</div>';
  }

  echo $output;
}

/* close the connection */
imap_close($inbox);
?>

When I use to fetch email from Gmail, the email body content is displayed, but once I use my mail server, I can't fetch the body content of email.

Can you help me fix this problem?

like image 244
Mohan Ram Avatar asked Mar 03 '11 07:03

Mohan Ram


People also ask

Can IMAP send messages?

Simply put, IMAP (Internet Access Message Protocol) is an email protocol that deals with managing and retrieving email messages from the receiving server. Since IMAP deals with message retrieval, you will not be able to use the IMAP protocol to send email. Instead, IMAP will be used for receiving messages.

Does IMAP store emails locally?

IMAP also offers more complex features than POP3, such as advanced options for managing folders, and status flagging of emails. However, it's worth noting that IMAP email does not store emails locally by default.


1 Answers

I had found solution, Error is with this line

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

Now, I am using

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

To receive body content in text/html format

Below i had given datails of available options. This might some one

()Root Message Part (multipart/related)
(1) The text parts of the message (multipart/alternative)
(1.1) Plain text version (text/plain)
(1.2) HTML version (text/html)
(2) The background stationary (image/gif)
like image 142
Mohan Ram Avatar answered Oct 12 '22 23:10

Mohan Ram