После анализа электронной почты imap я вставляю его в свою базу данных.Письма, которые не имеют вложений, вставляются без проблем, но письма с вложениями являются проблемой.Когда я вставляю, мой столбец тела в моей таблице заполнен сумасшедшими закодированными символами.Как можно расшифровать или остановить вставку вложений электронной почты в базу данных с помощью этих сумасшедших персонажей.Вот примеры примеров:% PDF-1.7% ���� 1 0 obj en.Ссылайтесь на мой код ниже и помогите пожалуйста.Спасибо.
<?php
$inbox = imap_open($hostname,$username,$password);
$emails = imap_search($inbox,'ALL');
$totalemails = imap_num_msg($inbox);
if($totalemails){
echo $totalemails;
}else{
echo 'There are no emails.';
}
echo "<br><hr><br>";
if($emails) {
rsort($emails);
foreach($emails as $email_number) {
$overview = imap_fetch_overview($inbox,$email_number,0);
$structure = imap_fetchstructure($inbox, $email_number);
if(isset($structure->parts) && is_array($structure->parts) && isset($structure->parts[1])) {
$part = $structure->parts[1];
$body = imap_fetchbody($inbox,$email_number,2);
if($part->encoding == 3) {
$message = imap_base64($body);
} else if($part->encoding == 1) {
$message = imap_qprint(imap_8bit($body));
} else if($part->encoding == 0) {
$message = $body;
} else if($part->encoding == 2) {
$message = imap_binary($body);
} else if($part->encoding == 4) {
$message = imap_qprint($body);
} else {
$message = $body;
}
$status =($overview[0]->seen ? 'read' : 'unread');
$from = utf8_decode(imap_utf8($overview[0]->from));
$date = utf8_decode(imap_utf8($overview[0]->date));
$subject = utf8_decode(imap_utf8($overview[0]->subject));
}
echo "status: " . $status . "<br>";
echo "subject: " . $subject . "<br>";
echo "from: " . $from . "<br>";
echo "date: " . $date . "<br>";
echo "body: " . $message . "<br><hr><br>";
//my insert into database code is here.
imap_delete($inbox, $email_number);
}
}
// close the connection
imap_close($inbox);
?>