<?php
/*
* test_message_decoder.php
*
* @(#) $Id: test_message_decoder.php,v 1.14 2021/02/22 16:02:28 mlemos Exp $
*
*/
require_once('rfc822_addresses.php');
require_once('mime_parser.php');
$message_file=((IsSet($_SERVER['argv']) && count($_SERVER['argv'])>1) ? $_SERVER['argv'][1] : 'test/sample/message.eml');
$mime=new mime_parser_class;
/*
* Set to 0 for parsing a single message file
* Set to 1 for parsing multiple messages in a single file in the mbox format
*/
$mime->mbox = 0;
/*
* Set to 0 for not decoding the message bodies
*/
$mime->decode_bodies = 1;
/*
* Set to 0 to make syntax errors make the decoding fail
*/
$mime->ignore_syntax_errors = 1;
/*
* Set to 0 to avoid keeping track of the lines of the message data
*/
$mime->track_lines = 1;
/*
* Set to 1 to make message parts be saved with original file names
* when the SaveBody parameter is used.
*/
$mime->use_part_file_names = 0;
/*
* Set this variable with entries that define MIME types not yet
* recognized by the Analyze class function.
*/
$mime->custom_mime_types = array(
'application/vnd.openxmlformats-officedocument.wordprocessingml.document'=>array(
'Type' => 'ms-word',
'Description' => 'Word processing document in Microsoft Office OpenXML format'
)
);
$parameters=array(
'File'=>$message_file,
/* Read a message from a string instead of a file */
/* 'Data'=>'My message data string', */
/* Save the message body parts to a directory */
/* 'SaveBody'=>'/tmp', */
/* Do not retrieve or save message body parts */
'SkipBody'=>1,
);
/*
* The following lines are for testing purposes.
* Remove these lines when adapting this example to real applications.
*/
if(defined('__TEST'))
{
if(IsSet($__test_options['parameters']))
$parameters=$__test_options['parameters'];
if(IsSet($__test_options['mbox']))
$mime->mbox=$__test_options['mbox'];
if(IsSet($__test_options['decode_bodies']))
$mime->decode_bodies=$__test_options['decode_bodies'];
if(IsSet($__test_options['use_part_file_names']))
$mime->use_part_file_names=$__test_options['use_part_file_names'];
if(IsSet($__test_options['use_part_file_names']))
$mime->use_part_file_names=$__test_options['use_part_file_names'];
if(IsSet($__test_options['message_buffer_length']))
$mime->message_buffer_length = $__test_options['message_buffer_length'];
}
if(!$mime->Decode($parameters, $decoded))
{
echo 'MIME message decoding error: '.$mime->error.' at position '.$mime->error_position;
if($mime->track_lines
&& $mime->GetPositionLine($mime->error_position, $line, $column))
echo ' line '.$line.' column '.$column;
echo "\n";
}
else
{
echo 'MIME message decoding successful.'."\n";
echo (count($decoded)==1 ? '1 message was found.' : count($decoded).' messages were found.'),"\n";
for($message = 0; $message < count($decoded); $message++)
{
echo 'Message ',($message+1),':',"\n";
var_dump($decoded[$message]);
if($mime->decode_bodies)
{
if($mime->Analyze($decoded[$message], $results))
var_dump($results);
else
echo 'MIME message analyse error: '.$mime->error."\n";
}
}
for($warning = 0, Reset($mime->warnings); $warning < count($mime->warnings); Next($mime->warnings), $warning++)
{
$w = Key($mime->warnings);
echo 'Warning: ', $mime->warnings[$w], ' at position ', $w;
if($mime->track_lines
&& $mime->GetPositionLine($w, $line, $column))
echo ' line '.$line.' column '.$column;
echo "\n";
}
}
?>
|