从imap电子邮件中提取链接时检测quoted_printable

时间:2019-06-09 00:57:10

标签: php imap

我有以下内容:

if($emails) {
    $output = '';
    rsort($emails);
    foreach($emails as $email_number) {
        foreach ([1,2] as $option) {
            $structure = imap_fetchstructure($inbox, $email_number);
            $overview = imap_fetch_overview($inbox,$email_number,0);
            $message = quoted_printable_decode(imap_fetchbody($inbox,$email_number,$option));

            $regex = '#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#';
            preg_match_all($regex, $message, $links);
            foreach ($links[0] AS $link) {
                $output .= $link.'<br>';
            }
    }}
    echo $output;
}

除了某些链接包含�且某些链接包含一个小的空白方形框外,此方法还可以。

如果我不使用quoted_printable_decode(imap_fetchbody($inbox,$email_number,$option))

然后某些链接包含= 3D。

我似乎无法弄清楚如何做到这一点。

我也尝试过:

$structure = imap_fetchstructure($inbox, $email_number, FT_UID);
if($structure->encoding == "4"){
    $message = base64_decode(imap_fetchbody($inbox, imap_msgno($inbox, $email_number), $option));
} elseif ($structure->encoding == "3") { 
    $message = imap_qprint(map_fetchbody($inbox, imap_msgno($inbox, $email_number), $option));
} else { 
    $message = imap_fetchbody($inbox,$email_number,$option);
}

我简直不知道该怎么做。

0 个答案:

没有答案