lectura de correo en php con imap

He leído el correo en php con imap_fetchbody () y lo decodifico con imap_qprint ().

$body = imap_fetchbody($mbox, $no, 1); $body = imap_qprint($body); 

pero hay una diferencia entre el correo original y el correo de salida

Correo original:

Texto sin formato

Este es un correo de prueba para verificar

primer segundo tercero cuarto quinto sexto

esto es fondo amarillo

sitio web: http://bizved.com

prueba de cita

Gracias Hiren Manek Bhuved Solutions

correo de salida

Texto sin formato

Este es un correo de prueba para verificar

primer segundo tercero cuarto quinto sexto

esto es fondo amarillo

sitio web: http: //bizved.com

prueba de quote

Gracias Hiren Manek Bhuved Solutions

¿Alguien puede dar solución? gracias por adelantado.

Siempre tuve el mismo problema con imaps. No garantizo nada, pero es posible que desee probar esto:

 function utf8_imap_header_decode($str) { $tmp = imap_mime_header_decode($str); if (!mb_check_encoding($tmp[0]->text, 'UTF-8')) return utf8_encode($tmp[0]->text); return $tmp[0]->text; } function utf8_imap_body_decode($str) { return utf8_encode(quoted_printable_decode($str)); } 

He hecho la siguiente solución como encabezados de correo ya su conjunto de caracteres.

 $st = imap_fetchstructure($mbox, $no); $part = $st->parts[$partno]; $body = imap_fetchbody($mbox, $no, $partno); $body = imap_qprint($body); $charset = 'UTF-8'; if(!empty($part->parameters)){ for ($k = 0, $l = count($part->parameters); $k < $l; $k++) { $attribute = $part->parameters[$k]; if($attribute->attribute == 'CHARSET'){ $charset = $attribute->value; } } } //echo $charset; $bodytext = mb_convert_encoding($body,'UTF-8',$charset); 

Esta no es una solución completa. Es solo para la encoding de caracteres. El correo tiene diferentes partes para texto sin formato, texto html, archivos adjuntos, etc. para eso debe tener un manejo diferente para cada tipo.