What considerations should be made when determining the mail type (text, HTML, encoding) before extracting the body in PHP?

When determining the mail type before extracting the body in PHP, considerations should be made for the content type (text or HTML) and the encoding used. This information can be found in the email headers, specifically the "Content-Type" header. By checking this header, you can determine if the email body is in plain text or HTML format, as well as the encoding used.

// Get the email headers
$headers = imap_headerinfo($inbox, $email_number);

// Check if the email is in HTML format
if (strpos($headers->content_type, 'text/html') !== false) {
    // Extract the HTML body
    $body = imap_fetchbody($inbox, $email_number, 1.2);
} else {
    // Extract the plain text body
    $body = imap_fetchbody($inbox, $email_number, 1);
}

// Decode the body if it is encoded
if ($headers->encoding == 1) {
    $body = imap_8bit($body);
} elseif ($headers->encoding == 2) {
    $body = imap_binary($body);
} elseif ($headers->encoding == 3) {
    $body = imap_base64($body);
} elseif ($headers->encoding == 4) {
    $body = imap_qprint($body);
}