0

Hi, first am a noob at PHP and IMAP.. So please bear with me...

I am trying to create a PHP page that will check an IMAP server for any unseen messages and download an attachment (the attachment will always be the same audio file format), then attach the file to another email that will allow the user to click on a link to play the attachment.. Whew... Pretty much sums it up...

Now, I have script to login and see messages, or unseen messages, but have searched for two weeks on exactly how to get to the attachment.....


Thanks in advance!

Brewsky

3
Contributors
2
Replies
7
Views
9 Years
Discussion Span
Last Post by vijaykavin10
0
<?php
     $host = '{imap.gmail.com:993/imap/ssl/novalidate-cert/norsh}inbox';
     $login = 'username';
     $password = 'password';
     $savedirpath = "/home/Mine/Public/";
     $type = 'ReadAttachment';
$obj = new $type;
$obj->getdata($host,$login,$password,$savedirpath,$delete_emails=false);
class ReadAttachment
{
    
	function getdecodevalue($message,$coding) {
		switch($coding) {
			case 0:
			case 1:
				$message = imap_8bit($message);
				break;
			case 2:
				$message = imap_binary($message);
				break;
			case 3:
			case 5:
				$message=imap_base64($message);
				break;
			case 4:
				$message = imap_qprint($message);
				break;
		}
		return $message;
	}

     
	function getdata($host,$login,$password,$savedirpath,$delete_emails=false) {
		// make sure save path has trailing slash (/)
		//print_r("test");
		$savedirpath = str_replace('\\', '/', $savedirpath);
		if (substr($savedirpath, strlen($savedirpath) - 1) != '/') {
			$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";
		//print_r($message);
		$emails = imap_search($mbox,'ALL');
		foreach($emails as $email_number) {
			$structure = imap_fetchstructure($mbox, $email_number , 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,$email_number,$fpos);  
					$filename="$filename";
					$fp=fopen($savedirpath.$filename,"w");
					$data=$this->getdecodevalue($mege,$part->type);
					//print_r($data);
					fputs($fp,$data);
					fclose($fp);
					$fpos+=1;
				}
			}
			
		}
		// imap_expunge deletes all tagged messages
		
		imap_close($mbox);
	}
}

    
?>

Hi
Here is my code while i run this code part of the attachment only rest of them couldn't...Eg If i am having 5 PDF resources in this 2 or 3 of the attachments is downloaded rest of the resources not able to download any one is having idea about this...

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.