Jump to content


Photo

Ler Anexo Em Imap


  • Faça o login para participar
10 replies to this topic

#1 bmamone

bmamone

    bmamone.com

  • Usuários
  • 374 posts
  • Sexo:Não informado
  • Localidade:São Paulo - Brasil
  • Interesses:Meus interesses lhe interessam? Não é interessante se interessar por meus interesses!

Posted 03/02/2007, 12:00

Depois de uma enorme luta para receber e notificar emails no servidor. :boxing:
Depois de desenvolver um sistema :boxing:
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. (y)


Abraços (ok2)
bmamone ~

Vem aí aquilo o que você não sabe o que é.
Mas vai gostar.
Ou não.

#2 victorhb

victorhb

    24 Horas

  • Usuários
  • 489 posts
  • Sexo:Masculino
  • Localidade:Brasília-DF

Posted 03/02/2007, 17:52

http://br.php.net/ma...BR/ref.imap.php

#3 bmamone

bmamone

    bmamone.com

  • Usuários
  • 374 posts
  • Sexo:Não informado
  • Localidade:São Paulo - Brasil
  • Interesses:Meus interesses lhe interessam? Não é interessante se interessar por meus interesses!

Posted 03/02/2007, 17:55

Depois de uma enorme luta para receber e notificar emails no servidor. :boxing:
Depois de desenvolver um sistema :boxing:
Há uma pedra no caminho <_<



http://br.php.net/ma...BR/ref.imap.php


Eu sei mexer no IMAP, quero saber como pego um anexo específico e tratar ele.
Minha página inicial é esse manual aí :D
E não tem isso nele, pelo menos não achei..
bmamone ~

Vem aí aquilo o que você não sabe o que é.
Mas vai gostar.
Ou não.

#4 victorhb

victorhb

    24 Horas

  • Usuários
  • 489 posts
  • Sexo:Masculino
  • Localidade:Brasília-DF

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.

#5 bmamone

bmamone

    bmamone.com

  • Usuários
  • 374 posts
  • Sexo:Não informado
  • Localidade:São Paulo - Brasil
  • Interesses:Meus interesses lhe interessam? Não é interessante se interessar por meus interesses!

Posted 03/02/2007, 19:47

Pesquisando por "attach" no Firefox, achei só uma ocorrência, que não me ajudou muito.
bmamone ~

Vem aí aquilo o que você não sabe o que é.
Mas vai gostar.
Ou não.

#6 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 04/02/2007, 00:52

Achei essa classe:
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

#7 bmamone

bmamone

    bmamone.com

  • Usuários
  • 374 posts
  • Sexo:Não informado
  • Localidade:São Paulo - Brasil
  • Interesses:Meus interesses lhe interessam? Não é interessante se interessar por meus interesses!

Posted 04/02/2007, 14:22

Não consegui me cadastrar, o email com a senha nunca chega...


To esperando.



Abraços (ok2)
bmamone ~

Vem aí aquilo o que você não sabe o que é.
Mas vai gostar.
Ou não.

#8 sk15

sk15

    Super Veterano

  • Usuários
  • 2071 posts
  • Sexo:Masculino
  • Localidade:SP - SP

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 bmamone

bmamone

    bmamone.com

  • Usuários
  • 374 posts
  • Sexo:Não informado
  • Localidade:São Paulo - Brasil
  • Interesses:Meus interesses lhe interessam? Não é interessante se interessar por meus interesses!

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 (ok2)
bmamone ~

Vem aí aquilo o que você não sabe o que é.
Mas vai gostar.
Ou não.

#10 sk15

sk15

    Super Veterano

  • Usuários
  • 2071 posts
  • Sexo:Masculino
  • Localidade:SP - SP

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 ...

<? 
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 bmamone

bmamone

    bmamone.com

  • Usuários
  • 374 posts
  • Sexo:Não informado
  • Localidade:São Paulo - Brasil
  • Interesses:Meus interesses lhe interessam? Não é interessante se interessar por meus interesses!

Posted 04/02/2007, 21:09

Yupaa, ao invéz de pegar o código e roubar ele <_<

Eu estudei! :D

E aprendi :lol:

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 (ok2)
bmamone ~

Vem aí aquilo o que você não sabe o que é.
Mas vai gostar.
Ou não.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq