imap erro de conversão
Pessoal,
tenho um script que le caixa de email e o retorno vem o seguinte
[1] => stdClass Object
(
[type] => 3
[encoding] => 4
[ifsubtype] => 1
[subtype] => OCTET-STREAM
[ifdescription] => 0
[ifid] => 0
[bytes] => 1254
[ifdisposition] => 1
[disposition] => attachment
[ifdparameters] => 1
[dparameters] => Array
(
[0] => stdClass Object
(
[attribute] => filename
[value] => CB081200.RET
)
)
[ifparameters] => 1
[parameters] => Array
(
[0] => stdClass Object
(
[attribute] => name
[value] => CB081200.TXT
)
)
)
O script que traz ele é esse
foreach($emails as $email_id){
$body = imap_fetchstructure($mailbox, $email_id);
$overview = imap_fetch_overview($mailbox,$email_id,0);
$coding = $body->parts[1]->encoding;
//regra para ler comente emails não lidos
if($overview[0]->seen == 0){
$att = count($body->parts);
if($att >=2) {
$nome_arquivo_ret = $body->parts[1]->parameters[0]->value;
if($body->parts[1]->disposition == 'attachment') {
if ($coding == 0) {
$file = imap_8bit(imap_fetchbody($mailbox, $email_id, 2));
} elseif ($coding == 1) {
$file = imap_8bit(imap_fetchbody($mailbox, $email_id, 2));
} elseif ($coding == 2) {
$file = imap_binary(imap_fetchbody($mailbox, $email_id, 2));
} elseif ($coding == 3) {
$file = imap_base64(imap_fetchbody($mailbox, $email_id, 2));
} elseif ($coding == 4) {
$file = imap_qprint(imap_fetchbody($mailbox, $email_id, 2));
} elseif ($coding == 5) {
$file = imap_base64(imap_fetchbody($mailbox, $email_id, 2));
}
}
}
}
O problema é que está encodificando errado o arquivo no caso ele cai no 4 encoding e nao converte corretamente o arquivo, alguem sabe me dizer porque?
Porque aparentemente esta certo o código
Discussão (0)
Carregando comentários...