Ler Anexo Em Imap
Started By bmamone, 03/02/2007, 12:00
10 replies to this topic
#1
Posted 03/02/2007, 12:00
Depois de uma enorme luta para receber e notificar emails no servidor.
Depois de desenvolver um sistema
Há uma pedra no caminho
Como faço pra pegar o anexo de um email via IMAP?
Não sei como pegar um header específico.
Sabendo qual é o nome do arquivo eu movo e faço o upload sozinho, a minha dúvida é pegar o caminho/nome do arquivo.
PS: acho que a postagem do código é desnecessária, a conexão está 100%, mas se precisar eu posto sem problemas.
Abraços
Depois de desenvolver um sistema
Há uma pedra no caminho
Como faço pra pegar o anexo de um email via IMAP?
Não sei como pegar um header específico.
Sabendo qual é o nome do arquivo eu movo e faço o upload sozinho, a minha dúvida é pegar o caminho/nome do arquivo.
PS: acho que a postagem do código é desnecessária, a conexão está 100%, mas se precisar eu posto sem problemas.
Abraços
#3
Posted 03/02/2007, 17:55
Depois de uma enorme luta para receber e notificar emails no servidor.
Depois de desenvolver um sistema
Há uma pedra no caminho
Eu sei mexer no IMAP, quero saber como pego um anexo específico e tratar ele.
Minha página inicial é esse manual aí
E não tem isso nele, pelo menos não achei..
#4
Posted 03/02/2007, 18:10
http://www.faqs.org/rfcs/rfc2060
Essa aí é a estrutura e documentação completa do IMAP, veja se ajuda.
Essa aí é a estrutura e documentação completa do IMAP, veja se ajuda.
#6
Posted 04/02/2007, 00:52
Achei essa classe:
http://www.phpclasse...file/13399.html
Obs.: Precisa ter login no site para visualizar.
http://www.phpclasse...file/13399.html
Obs.: Precisa ter login no site para visualizar.
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29
#8
Posted 04/02/2007, 16:58
Aqui o PHPClasse funciono sempre legal ... vou fazer uma ponte a classe que o "Eclesiastes" posto é essa:
<? ###################################### #Coded By Jijo Last Update Date[Jan/19/06] ##################################### ########################################################## ###################### Class readattachment ############### class readattachment { function getdecodevalue($message,$coding) { if ($coding == 0) { $message = imap_8bit($message); } elseif ($coding == 1) { $message = imap_8bit($message); } elseif ($coding == 2) { $message = imap_binary($message); } elseif ($coding == 3) { $message=imap_base64($message); } elseif ($coding == 4) { $message = imap_qprint($message); } elseif ($coding == 5) { $message = imap_base64($message); } return $message; } function getdata($host,$login,$password,$savedirpath) { $mbox = imap_open ($host, $login, $password) or die("can't connect: " . imap_last_error()); $message = array(); $message["attachment"]["type"][0] = "text"; $message["attachment"]["type"][1] = "multipart"; $message["attachment"]["type"][2] = "message"; $message["attachment"]["type"][3] = "application"; $message["attachment"]["type"][4] = "audio"; $message["attachment"]["type"][5] = "image"; $message["attachment"]["type"][6] = "video"; $message["attachment"]["type"][7] = "other"; for ($jk = 1; $jk <= imap_num_msg($mbox); $jk++) { $structure = imap_fetchstructure($mbox, $jk , FT_UID); $parts = $structure->parts; $fpos=2; for($i = 1; $i < count($parts); $i++) { $message["pid"][$i] = ($i); $part = $parts[$i]; if($part->disposition == "ATTACHMENT") { $message["type"][$i] = $message["attachment"]["type"][$part->type] . "/" . strtolower($part->subtype); $message["subtype"][$i] = strtolower($part->subtype); $ext=$part->subtype; $params = $part->dparameters; $filename=$part->dparameters[0]->value; $mege=""; $data=""; $mege = imap_fetchbody($mbox,$jk,$fpos); $filename="$filename"; $fp=fopen($filename,w); $data=$this->getdecodevalue($mege,$part->type); fputs($fp,$data); fclose($fp); $fpos+=1; } } imap_delete($mbox,$jk); } imap_expunge($mbox); imap_close($mbox); } } ?>
#9
Posted 04/02/2007, 17:26
Legal, valeu sk15...
Bom, queria saber pra que serve a variavel $savedirpath
Não axei utilidade alguma pra ela!
Outra coisa, não entendi como o cara pega o email, e aonde é salvo.
Dei uma lida, e na parte do fopen, fputs, talz, tive uma dúvida de como ele escreve um arquivo ali o.o
Abraços
Bom, queria saber pra que serve a variavel $savedirpath
Não axei utilidade alguma pra ela!
Outra coisa, não entendi como o cara pega o email, e aonde é salvo.
Dei uma lida, e na parte do fopen, fputs, talz, tive uma dúvida de como ele escreve um arquivo ali o.o
Abraços
#10
Posted 04/02/2007, 17:36
Bem não sei se isso ajuda mas lá tbm tem o exemplo de como se usa essa classe postado pelo o cara que fez ela ...
Onde o "attachmentread.class.php" é o arquivo que postei anteriomente ...
<? require_once("attachmentread.class.php"); $host="{my.mailserver.net:110/pop3}"; // pop3host $login="user1"; //pop3 login $password="passwd1"; //pop3 password $savedirpath=""; // attachement will save in same directory where scripts run othrwise give abs path $jk=new readattachment(); // Creating instance of class#### $jk->getdata($host,$login,$password,$savedirpath); // calling member function ?>
Onde o "attachmentread.class.php" é o arquivo que postei anteriomente ...
#11
Posted 04/02/2007, 21:09
Yupaa, ao invéz de pegar o código e roubar ele
Eu estudei!
E aprendi
Mas, só consegui pegar o nome do arquivo....
Aonde ele fica hospedado?
Aqui tá o código pra quem quiser estudar...
Ele lê o PRIMEIRO email que tiver, e se tiver anexo de IMAGEM (que vai ser do meu sistema), faz o upload.
Agora preciso pegar o caminho completo.
Se alguem quiser saber como faz pra pegar todos os anexos em todas as mensagens só pedir que eu boto.
Mas mesmo assim, fico sem saber como é o caminho
Abraços
Eu estudei!
E aprendi
Mas, só consegui pegar o nome do arquivo....
Aonde ele fica hospedado?
Aqui tá o código pra quem quiser estudar...
<? $mbox = imap_open ("SERVIDOR", "USUARIO", "SENHA") or die("Não foi possivel conectar"); $estrutura = imap_fetchstructure($mbox, 1); if($estrutura -> type = 5){ echo "1 anexo: imagem"; }else{ echo "0 anexos"; } foreach ($estrutura->parts as $parte){ $arquivo = $parte->dparameters[0]->value; $destino = "email/"; if(!move_uploaded_file($arquivo, $destino)){ echo "Não foi possivel fazer UPLOAD"; }else{ echo "Upload feito com sucesso!"; } } ?>
Ele lê o PRIMEIRO email que tiver, e se tiver anexo de IMAGEM (que vai ser do meu sistema), faz o upload.
Agora preciso pegar o caminho completo.
Se alguem quiser saber como faz pra pegar todos os anexos em todas as mensagens só pedir que eu boto.
Mas mesmo assim, fico sem saber como é o caminho
Abraços
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)