ballouta Posted May 26, 2008 Share Posted May 26, 2008 Hello i have this code, it is all working but the From email address is not showing, instead it is showing the sender's name! Online Demo! http://www.motif-services.com/hc.php the Problem here: Header From : Mohammad Daouk $SaveFileDirectory = "/home/motifser/public_html/malek/"; function WriteToFile($file,$contents) { // IF the contents is empty lets just make it one space if ($contents=='' || empty($contents)) $contents = " "; // $file is the full path to the file $fh = fopen($file, "w") or die("Could not open file!"); fwrite($fh, $contents) or die("Could not write to file"); fclose($fh); } //check for new messages $mailbox = imap_open("{localhost:143/notls}INBOX", "[email protected]", "123") or die("Can't connect: " . imap_last_error());; // Check messages $check = imap_check($mailbox); // viewing number of messages in inbox $chec = imap_mailboxmsginfo($mailbox); //echo "Number of Messages: " . $chec->Nmsgs . "<br />\n"; //$cont=$chec->Nmsgs; $headers = @imap_headers($mailbox) or die("Couldn't get emails"); $numEmails = sizeof($headers); echo "You have $numEmails messages in your mailbox <br><br><br>"; for($j = $numEmails; $j >=1; $j--) { $mailHeader = @imap_headerinfo($mailbox, $j); $from = $mailHeader->fromaddress; $subject = strip_tags($mailHeader->subject); $date = $mailHeader->date; //echo "Email from $from, subject $subject, date $date<br>"; if ($check->Nmsgs=='0') { echo "There are no messages that need to be downloaded"; } else { $emailIndex = $j; echo "Processing email " . $emailIndex . "<br>"; $header = imap_header($mailbox, $emailIndex); print("<PRE>"); print("Header Date : " . $date . "<BR>"); //print("Header To : " . $header->to) . "<BR>"; print("Header From : " . $from . "<BR>"); //print("Header cc : " . $header->cc . "<BR>"); print("Header ReplyTo : " . $from . "<BR>"); print("Header Subject : " . $subject . "<BR></PRE>"); /* Lets find the email body */ $struct = imap_fetchstructure($mailbox, $emailIndex); $parts = $struct->parts; $i = 0; if (!$parts) { /* Simple message, only 1 piece */ $attachment = array(); /* No attachments */ $Email_Comments = imap_body($mailbox, $emailIndex); } else { /* Complicated message, multiple parts */ $endwhile = false; $stack = array(); /* Stack while parsing message */ $Email_Comments = ""; /* Content of message */ $attachment = array(); /* Attachments */ while (!$endwhile) { if (!$parts[$i]) { if (count($stack) > 0) { $parts = $stack[count($stack)-1]["p"]; $i = $stack[count($stack)-1]["i"] + 1; array_pop($stack); } else { $endwhile = true; } } if (!$endwhile) { /* Create message part first (example '1.2.3') */ $partstring = ""; foreach ($stack as $s) { $partstring .= ($s["i"]+1) . "."; } $partstring .= ($i+1); if (strtoupper($parts[$i]->disposition) == "ATTACHMENT") { /* Attachment */ $attachment[] = array("filename" => $parts[$i]->parameters[0]->value, "filedata" => imap_fetchbody($mailbox, $emailIndex, $partstring)); } elseif (strtoupper($parts[$i]->subtype) == "PLAIN") { /* Message */ $Email_Comments .= imap_fetchbody($mailbox, $emailIndex, $partstring); echo "Email Body: $Email_Comments <br/><br/>"; $daouk=$Email_Comments; // my code $emailIndex +=1; } } if ($parts[$i]->parts) { $stack[] = array("p" => $parts, "i" => $i); $parts = $parts[$i]->parts; $i = 0; } else { $i++; } } /* while */ } /* complicated message */ foreach ($attachment as $attach) { WriteToFile($SaveFileDirectory . $attach['filename'], imap_base64($attach['filedata'])); echo "Attachment found: " . $attach['filename'] . "<br><hr>"; } } // end else //imap_delete($mailbox, $j); //imap_expunge($mailbox); } // end for Link to comment https://forums.phpfreaks.com/topic/107298-imap-header-problem/ Share on other sites More sharing options...
rarebit Posted May 26, 2008 Share Posted May 26, 2008 Taking a wild guess here... but look at this, then look at the 'Return Values' section and it seems that you want to use: $from = $mailHeader->from; not $from = $mailHeader->fromaddress; but since i've not tried it, I may be wrong to believe this... Link to comment https://forums.phpfreaks.com/topic/107298-imap-header-problem/#findComment-550177 Share on other sites More sharing options...
ballouta Posted May 26, 2008 Author Share Posted May 26, 2008 I will make this modification and test my code. In this time , i would like to know the best and good way to loop over the messages found in my inbox. In my code, i use a for loop, but I don't think it is a good way of programming in this issue! 1. I want to loop over the messages (prefer anthor way) 2. Fetch and copy the attched files to a specific Folder (this piece of code is working) 3. Delete this message after copying its attachment file. Thanks alot Link to comment https://forums.phpfreaks.com/topic/107298-imap-header-problem/#findComment-550296 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.