Re: Save email as .eml file

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks for your help. How would I go about getting procmail to forward it? 

What I currently have is a script that connects to a free email address that
collects bounces captured from newsletters the system has sent. I'm using
IMAP to connect to the mailbox, then looping through and trying to create
the eml files. I don't know if the procmail approach would work, as I can
only access my email through IMAP (not even POP3).

Last night while examining some eml files and cross referencing to the value
imap_body returned, I was thinking I may be able to just dump that to a
file. Do you think that would work? There's a class on phpclasses that
handles bounces, but it requires eml files
(http://www.phpclasses.org/browse/package/2691.html).

Here is my code as it is now, don't know if that would help or not:

############### CODE ############### 

$imap = imap_open("{mail.messagingengine.com:143}INBOX", "**", "**");

$message_count = imap_num_msg($imap);

echo "<h3>$message_count Emails Returned</h3>";


for ($i = 1; $i <= $message_count; ++$i) 
{
	$header = imap_header($imap, $i);
	
	if (isset($header->from[0]->personal)) 
	{
		$personal = $header->from[0]->personal;
	} 
	else 
	{
		$personal = $header->from[0]->mailbox;
	}

	$eml = "date : $header->Date \n";
	$eml .= "from : $personal 
<{$header->from[0]->mailbox}@{$header->from[0]->host}> \n";
	$eml .= "subject : $header->Subject \n";
	$eml .= "to : $personal 
<{$header->to[0]->mailbox}@{$header->from[0]->host}> \n";
	
	$eml .= imap_body($imap, $i, "FT_PEEK")."\n";
	
	$messageID = imap_bodystruct($imap, $i, "message_id");

	echo "<h3>header</h3><pre style=\"color:red;\">";
	print_r($header);
	echo "</pre>";

        echo "<h3>Body</h3><pre style=\"color:red;\">";
	print_r(imap_body($imap, $i, "FT_PEEK"));
	echo "</pre>";

	$file = "../eml/".rand(1111, 9999).".eml";   
	if (!$file_handle = fopen($file,"a")) { echo "Cannot open file"; }  
	if (!fwrite($file_handle, $eml)) { echo "Cannot write to file"; }  
	echo "<h4>You have successfully written data to $file</h4>";   
	fclose($file_handle);   
	
}


imap_close($imap);



Thanks,
Bobby


Handa Utsav wrote:
> 
> Hi there,
> 
> Well it can be easily done. Just input your mail (make 'procmail' fwd
> it) to your script & script would save it as .eml .
> 
> Try to use the following code for script :
> 
> ######## CODE #####################
> 
> <?php 
> 
> $email = "";
> ## Read
> E-mail                                                                                                 
> $fd = fopen("php://stdin", "r");
> while (!feof($fd)) {
> $email .= fread($fd, 1024);
> }
> fclose($fd);
> 
> # Save email
> $handle = fopen("$path/$file_name.eml","a+");
>  if (!$handle) {
>    fwrite($log_handle," Failed ");
>  }
>  else {
>    fwrite($handle,"$email");
>    fclose($handle);
>  }
> 
> 
> ?>
> 
> Hope this helps you out.
> 
> 
> Greetings
> Utsav Handa
> 
> -- 
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Save-email-as-.eml-file-tf4103444.html#a11712721
Sent from the PHP - General mailing list archive at Nabble.com.

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux