简体   繁体   中英

How to get special characters of the body of an email using imap with PhP?

I'm using imap with php to get the body of my emails.

With what've coded so far, I am not getting the special characters and weird formatting at the end. For instance, if I send myself an email (with a regular email client such as Apple Mail) that says:

Test with characters é à and some ! that rock.

What I get with php is:

Test with characters =C3=A9 =C3=A0 and some ! that rock.=

I've tried re-sending the body through the mail function of php with those headers, but I'm still getting the same problem.

$headers="From: address@email.com" . "\r\n" . "MIME-Version: 1.0" . "\r\n" . "Content-type:text/html;charset=UTF-8";
mail($sendTo, $message, $noBody, $headers);

I've tried addslashes() , which didn't help either.

Sample of my code here:

$imapLink=imap_open("{".$mailbox."}INBOX",$username,$password);
$mailBoxInfos = imap_check($imapLink);
$mailList = imap_fetch_overview($imapLink,"1:".$mailBoxInfos->Nmsgs);
if(isset($mailList))
{
    $numMess = imap_num_msg($imapLink);
    while($numMess>0) {
        $message = imap_body($imapLink, $numMess);
        $numMess --;
    }
}
$imapClose = imap_close($imapLink);

Hope you can help me with that!

Thanks in advance!

Arthur

The =XX you see in your text is called "Quoted-Printable Content". It's used to display character which can't be displayed in 7-bits.

You can use quoted_printable_decode() to convert it back to a readable string.

So this should work:

$message = imap_body($imapLink, $numMess);
$message = quoted_printable_decode($message); // <-- add this line
$numMess --;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM