<?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"; } } ?> |