У меня есть следующее:
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);
}
Я просто не могу понять, как это сделать.