PHP Classes
elePHPant
Icontem

Retrieve email from gmail with imap: Retrieve mail and decode correctly

Recommend this page to a friend!
  All requests RSS feed  >  Retrieve email from gmail with imap  >  Request new recommendation  >  A request is featured when there is no good recommended package on the site when it is posted. Featured requests  >  No recommendations No recommendations  

Retrieve email from gmail with imap

Edit

by Syd Chino Barrett - 4 years ago (2015-11-09)

Retrieve mail and decode correctly

This request is clear and relevant.
This request is not clear or is not relevant.

+5

I do the connection, I can grab the emails. but they are illegible. Maybe I have problem with imap_fetch_body. Any ideas?

  • 2 Clarification requests
  • 2. by Manuel Lemos - 4 years ago (2015-11-09) Reply

    DO you want to decode the retrieved messages so they can be rendered in a way the user understands?

    • 3. by Dave Smith - 4 years ago (2015-11-09) in reply to comment 2 by Manuel Lemos Comment

      There is a known issue with imap, and this is probably what he is running into. According to the request, everything is in place, he is just is getting illegible content back, so instead of answering a technical question in a package recommendation section, it makes more sense to me to answer the question in the section where it would do most users the most good. But, that may just be me.

    • 3. by Dave Smith - 4 years ago (2015-11-09) in reply to comment 2 by Manuel Lemos Comment

      There is a known issue with imap, and this is probably what he is running into. According to the request, everything is in place, he is just is getting illegible content back, so instead of answering a technical question in a package recommendation section, it makes more sense to me to answer the question in the section where it would do most users the most good. But, that may just be me.

    • 4. by Manuel Lemos - 4 years ago (2015-11-10) in reply to comment 3 by Dave Smith Comment

      I am not aware of that issue. What is it?

      What I know is that imap extension was considered to be removed from PHP core because the base C library is not maintained.

      When he says illegible, it crosses my mind that the message parts may be base64 encoded even for text or HTML parts. That is why I asked if he wanted to decode the messages.

    • 5. by Syd Chino Barrett - 4 years ago (2015-11-10) in reply to comment 4 by Manuel Lemos Comment

      Exactly. There is a problem with encode/decode. Problems with special char. The worse thing is the image, converted in text. BUT, at the end I used the options of imap_fetchbody

      0 - Message header 1 - MULTIPART/ALTERNATIVE 1.1 - TEXT/PLAIN 1.2 - TEXT/HTML 2 - MESSAGE/RFC822 (entire attached message) 2.0 - Attached message header 2.1 - TEXT/PLAIN 2.2 - TEXT/HTML 2.3 - file.ext

      with the 1 option, I have plain text and for now is good. My problem was the insertion in a SQL Table with all strange charachters.

      I did a simple page.

      $oConn=new SQL();

      if($emails) {

      $output = '';
      

      rsort($emails);
      

      foreach($emails as $email_number) 
      {
          $header=imap_headerinfo($inbox,$email_number);
      

          $from = $header->from[0]->mailbox . "@" . $header->from[0]->host;
          $toaddress=$header->toaddress;
          $replyto=$header->reply_to[0]->mailbox."@".$header->reply_to[0]->host;
          $datetime=date("Y-m-d H:i:s",$header->udate);
          $subject=$header->subject;
      

          //remove the " from the $toaddress
          $toaddress = str_replace('"','',$toaddress);
      

          // echo '<strong>A:</strong> '.$toaddress.'<br>';
          // echo '<strong>Da:</strong> '.$from.'<br>';
          // echo '<strong>Oggetto:</strong> '.$subject.'<br>';
          // echo '<strong>Data:</strong> '.$datetime.'<br>';
      

          $message = (imap_fetchbody($inbox,$email_number,1));
      	
      	/*0 - Message header
      	1 - MULTIPART/ALTERNATIVE
      	1.1 - TEXT/PLAIN
      	1.2 - TEXT/HTML
      	2 - MESSAGE/RFC822 (entire attached message)
      	2.0 - Attached message header
      	2.1 - TEXT/PLAIN
      	2.2 - TEXT/HTML
      	2.3 - file.ext*/
      	
      	
          if($message == '')
          {
              $message = (imap_fetchbody($inbox,$email_number,1));
          }
      	
      	$ett = between('ETT :', 'Telefonico :', $message);
      	$telefonico = between('Telefonico :', 'Nome cliente :', $message );
      	$cliente  = between('Nome cliente :', 'Recapito :', $message );
      	$recapito  = between('Recapito :', 'indirizzo :', $message );
      	$indirizzo  = between('indirizzo :', 'Note :', $message );
      	$note  = after('Note :', $message );
      	
      	//echo "$ett<br>";
      	//echo "$telefonico<br>";
      	//echo "$cliente<br>";
      	//echo "$recapito<br>";		
      	//echo "$indirizzo<br>";
      	//echo "$note<br>";
      	
      	
      	$query  = " INSERT INTO Onfield.dbo.Imap ( EmailTo, EmailFrom, Subject, message, ETT, Telefono, Cliente, Recapito, Indirizzo, Note) VALUES ( '".$toaddress."', '".$from."', '".$subject."', '".$message."', '".$ett."',	'".$telefonico."',	'".$cliente."','".$recapito."','".$indirizzo."', '".$note."' ) " ;
      	
      	$oConn->Query($query);
      	
      	//echo $message.'<br>' ;
      	//echo $query;	
       
      

      } }

      between and after are functions.

  • 1. by Dave Smith - 4 years ago (2015-11-09) Reply

    I would post your question in the php specialists forum, you are more likely to get an answer there.

    Ask clarification

    1 Recommendation

    PHP MIME Email Message Parser: Decode MIME e-mail messages

    This recommendation solves the problem.
    This recommendation does not solve the problem.

    +4

    by Manuel Lemos package author package author Reputation 17800 - 4 years ago (2015-11-10) Comment

    I think imap_fetch_body does not decode the messages. It may be encoded with quoted-printable or base64.

    Use this class and pass the whole message with headers and all parts, so it decodes each part for you.

    The class is tolerant to malformed messages. So if the sender sent a message with encoding mistakes, the class still parses the message as much as possible.

    • 1 Comment
    • 1. by Syd Chino Barrett - 4 years ago (2015-11-11) Reply

      Thank you. I will try as soon as I have little time. I was testing the Imap function with "classic" mail, instead fortunately in my mailbox I will receive preformatted mail with Subject, and six information (Ett, telefonico, cliente, etc.), so I need just plain text for retrieving this information. Thank for your support, surely I will study your package.

      Have a nice day.


    Recommend package
    : 
    :