128 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Safe;
 | |
| 
 | |
| use Safe\Exceptions\MailparseException;
 | |
| 
 | |
| /**
 | |
|  * Extracts/decodes a message section from the supplied filename.
 | |
|  *
 | |
|  * The contents of the section will be decoded according to their transfer
 | |
|  * encoding - base64, quoted-printable and uuencoded text are supported.
 | |
|  *
 | |
|  * @param resource $mimemail A valid MIME resource, created with
 | |
|  * mailparse_msg_create.
 | |
|  * @param mixed $filename Can be a file name or a valid stream resource.
 | |
|  * @param callable $callbackfunc If set, this must be either a valid callback that will be passed the
 | |
|  * extracted section, or NULL to make this function return the
 | |
|  * extracted section.
 | |
|  *
 | |
|  * If not specified, the contents will be sent to "stdout".
 | |
|  * @return string If callbackfunc is not NULL returns TRUE on
 | |
|  * success.
 | |
|  *
 | |
|  * If callbackfunc is set to NULL, returns the
 | |
|  * extracted section as a string.
 | |
|  * @throws MailparseException
 | |
|  *
 | |
|  */
 | |
| function mailparse_msg_extract_part_file($mimemail, $filename, callable $callbackfunc = null): string
 | |
| {
 | |
|     error_clear_last();
 | |
|     if ($callbackfunc !== null) {
 | |
|         $result = \mailparse_msg_extract_part_file($mimemail, $filename, $callbackfunc);
 | |
|     } else {
 | |
|         $result = \mailparse_msg_extract_part_file($mimemail, $filename);
 | |
|     }
 | |
|     if ($result === false) {
 | |
|         throw MailparseException::createFromPhpError();
 | |
|     }
 | |
|     return $result;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Frees a MIME resource.
 | |
|  *
 | |
|  * @param resource $mimemail A valid MIME resource allocated by
 | |
|  * mailparse_msg_create or
 | |
|  * mailparse_msg_parse_file.
 | |
|  * @throws MailparseException
 | |
|  *
 | |
|  */
 | |
| function mailparse_msg_free($mimemail): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \mailparse_msg_free($mimemail);
 | |
|     if ($result === false) {
 | |
|         throw MailparseException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Parses a file.
 | |
|  * This is the optimal way of parsing a mail file that you have on disk.
 | |
|  *
 | |
|  * @param string $filename Path to the file holding the message.
 | |
|  * The file is opened and streamed through the parser.
 | |
|  *
 | |
|  * The message contained in filename is supposed to end with a newline
 | |
|  * (CRLF); otherwise the last line of the message will not be parsed.
 | |
|  * @return resource Returns a MIME resource representing the structure.
 | |
|  * @throws MailparseException
 | |
|  *
 | |
|  */
 | |
| function mailparse_msg_parse_file(string $filename)
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \mailparse_msg_parse_file($filename);
 | |
|     if ($result === false) {
 | |
|         throw MailparseException::createFromPhpError();
 | |
|     }
 | |
|     return $result;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Incrementally parse data into the supplied mime mail resource.
 | |
|  *
 | |
|  * This function allow you to stream portions of a file at a time, rather
 | |
|  * than read and parse the whole thing.
 | |
|  *
 | |
|  * @param resource $mimemail A valid MIME resource.
 | |
|  * @param string $data The final chunk of data is supposed to end with a newline
 | |
|  * (CRLF); otherwise the last line of the message will not be parsed.
 | |
|  * @throws MailparseException
 | |
|  *
 | |
|  */
 | |
| function mailparse_msg_parse($mimemail, string $data): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \mailparse_msg_parse($mimemail, $data);
 | |
|     if ($result === false) {
 | |
|         throw MailparseException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Streams data from the source file pointer, apply
 | |
|  * encoding and write to the destination file pointer.
 | |
|  *
 | |
|  * @param resource $sourcefp A valid file handle. The file is streamed through the parser.
 | |
|  * @param resource $destfp The destination file handle in which the encoded data will be written.
 | |
|  * @param string $encoding One of the character encodings supported by the
 | |
|  * mbstring module.
 | |
|  * @throws MailparseException
 | |
|  *
 | |
|  */
 | |
| function mailparse_stream_encode($sourcefp, $destfp, string $encoding): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \mailparse_stream_encode($sourcefp, $destfp, $encoding);
 | |
|     if ($result === false) {
 | |
|         throw MailparseException::createFromPhpError();
 | |
|     }
 | |
| }
 |